La fonction “ ” doit être utilisé avec un préfixe lorsqu'un espace de noms par défaut n'est pas spécifié

nous faisons un peu bizarre de la manipulation de nos variables de formulaire. De toute façon, j'ai réussi à obtenir les variables à partir de la demande afin que je puisse faire une base de données des trucs. Maintenant, je veux publier sur le de sorte que le sélectionnez les cases sont peut être renseigné avec les sélections d'origine.

Voici un exemple d'un champ de sélection:

JSP:

Condition Code: 
<select size="1" name="filterCriteria('CONDITION_CODE').values">
  <option value="">&nbsp;</option>
  <c:forEach var="bean" items="${conditions}">
    <option value="'${bean.code}'"<c:if test="${bean.code == form.filterCriteria('CONDITION_CODE').values}"> selected="selected"</c:if>>${bean.code}:&nbsp;${bean.description}</option>
  </c:forEach>
</select> 
<input type="hidden" name="filterCriteria('CONDITION_CODE').fieldName" value="CONDITION_CODE"/>
<input type="hidden" name="filterCriteria('CONDITION_CODE').operation" value="="/>

Comme vous pouvez le voir, le nom est une fonction de la forme: name="filterCriteria('CONDITION_CODE').values

Ici est de la forme:

private String[] fieldNames;

private Map<String, FilterCriteriaForm> filters = 
    new HashMap<String, FilterCriteriaForm>();




public String[] getFieldNames() { return this.fieldNames; }
  public Map<String, FilterCriteriaForm> getFilters() { return this.filters; }



   public FilterCriteriaForm getFilterCriteria(String fieldName)
    throws ServletException
{
    FilterCriteriaForm filter = (FilterCriteriaForm)filters.get(fieldName);

    if (filter == null)
    {
        filter = new DetFilterCriteriaForm( requestAction );
        filters.put( fieldName, filter );
    }

    return filter;
}


    public void setFilters(Map<String, FilterCriteriaForm> val) { this.filters = val; }
    }

De toute façon, normalement, je fais quelque chose de ce genre sur les jsp pour définir le champ arrière pour ce qui est de la forme: "<c:if test="${bean.code == form.filterCriteria('CONDITION_CODE').values}"> selected="selected"</c:if>

Quand je fais cela...j'ai cette erreur:

La fonction filterCriteria doit être utilisé avec un préfixe lorsqu'un espace de noms par défaut n'est pas spécifié

edit:

    Condition Code:&nbsp;<select size="1" name="filterCriteria('CONDITION_CODE').values">
              <c:set var="condition" value="filterCriteria('CONDITION_CODE').values" /> 
                         <option value="">&nbsp;</option>
                         <c:forEach var="bean" items="${conditions}">
                         <option value="'${bean.code}'" <c:if test="${bean.code == param[condition]}">selected="selected"</c:if>>${bean.code}:&nbsp;${bean.description}</option>
                         </c:forEach>
                         </select> 
                       <input type="hidden" name="filterCriteria('CONDITION_CODE').fieldName" value="CONDITION_CODE"/>
                       <input type="hidden" name="filterCriteria('CONDITION_CODE').operation" value="="/>
                       <br/></br>

C'EST CE QUI A FONCTIONNÉ....J'ai regardé à nouveau le formulaire de plus près...a pris les guillemets simples et utilisé le getFilters():

<select size="1" name="filterCriteria(CONDITION_CODE).values">   
             <option value="">&nbsp;</option>   
              <c:forEach var="bean" items="${conditions}">     
              <c:set var="code" value="'${bean.code}'" />     
              <option value="${code}" <c:if test='${code == form.filters["CONDITION_CODE"].values[0]}'>selected="selected"</c:if>>${bean.code}:&nbsp;${bean.description}</option>   
              </c:forEach> 
              </select> 

OriginalL'auteur Doc Holiday | 2012-02-16