2011-08-26 15 views

risposta

5

Ecco la mia soluzione a questo problema. La sua massa, ma funziona

generi: qualificatore dal modello java

// model.addAttribute("genders", genders); 

conto: modelattribute binded per le forme primaverili

fmt: messaggio: traduce m "Mees" (Estone)

<form:select path="cfGender"> 
<c:forEach var="item" items="${genders}"> 
    <c:choose> 
     <c:when test="${account.getCfGender().getCfGender()==item.getCfGender()}"> 
      <form:option selected="true" value="${item.getCfGender()}"> 
       <fmt:message key="cf_gender.${item.getCfGender()}" /> 
      </form:option> 
     </c:when> 

     <c:otherwise> 
      <form:option value="${item.getCfGender()}"> 
       <fmt:message key="cf_gender.${item.getCfGender()}" /> 
      </form:option> 
     </c:otherwise> 
    </c:choose> 
</c:forEach> 
</form:select> 
0

prima di legare il modulo al modello, è necessario impostare qualsiasi variabile che si desidera selezionare sul valore desiderato nel controller del proprio jsp.

Quando il modulo è compilato in jsp, quella variabile modulo sarà il valore predefinito selezionato nell'elenco delle opzioni.

2

Prova questo, per me funziona

<form:select path="size"> 
    <c:forEach items="${sizeList}" var="s" varStatus="status"> 
     <c:choose> 
      <c:when test="${s eq 25}"> 
       <option value="${s}" selected="true">${s}</option> 
      </c:when> 
      <c:otherwise> 
       <option value="${s}">${s}</option> 
      </c:otherwise> 
     </c:choose> 
    </c:forEach> 
</form:select> 
+1

Grazie - Ho cercato di capirlo tutto il giorno! –

+1

Btw, un vantaggio di questo approccio è che è possibile mostrare selezioni multiple. –

5

Non c'è bisogno di usare se il resto

Esempio:

Student student = new Student(); 
student.gender = "F"; 
model.addObject("student", student); 

Map<String, String> genders = new LinkedHashMap<String, String>(); 
genders.put("M", "Male"); 
genders.put("F", "Female"); 
model.addObject("genders", genders); 

JSP Codice

modelAttribute & commandName sono intercambiabili

<c:url value="/Student/Edit" var="editstudenturl"/> 
<form:form method="post" action="${editstudenturl}" modelAttribute="student" class="form-horizontal"> 
    <form:select path="gender" class="form-control" id="gender" > 
    <form:options items="${genders}" /> 
    </form:select> 
</form:form> 
2

Ho avuto problemi simili e dopo diversi giorni di lotta con esso, sono stato in grado di risolvere il problema mediante l'attuazione di hash e metodi uguali nella mia classe del modello. Il problema è che la primavera non è stata in grado di determinare dove un oggetto nel menu a discesa è uguale a un valore nel modello. Ma dopo aver implementato l'hash e gli uguali nell'oggetto modello, tutto ha funzionato bene.

@Entity 
@Table(name = "BANKS") 
public class Bank implements java.io.Serializable { 

/** 
* 
*/ 
private static final long serialVersionUID = -8928809572705999915L; 

private Long id; 

private String bankCode; 

private String bankName; 

........... 

@Override 
public int hashCode() { 
    final int prime = 31; 
    int result = 1; 
    result = prime * result 
      + ((bankCode == null) ? 0 : bankCode.hashCode()); 
    result = prime * result 
      + ((bankName == null) ? 0 : bankName.hashCode()); 
    result = prime * result + ((id == null) ? 0 : id.hashCode()); 
    return result; 
} 

@Override 
public boolean equals(Object obj) { 
    if (this == obj) 
     return true; 
    if (obj == null) 
     return false; 
    if (getClass() != obj.getClass()) 
     return false; 
    Bank other = (Bank) obj; 
    if (bankCode == null) { 
     if (other.bankCode != null) 
      return false; 
    } else if (!bankCode.equals(other.bankCode)) 
     return false; 
    if (bankName == null) { 
     if (other.bankName != null) 
      return false; 
    } else if (!bankName.equals(other.bankName)) 
     return false; 
    if (id == null) { 
     if (other.id != null) 
      return false; 
    } else if (!id.equals(other.id)) 
     return false; 
    return true; 
} 

E nella vista che ho qualcosa di simile

<form:select path="bank" cssClass="form-control" required="true"> 
     <form:option value="">--Select--</form:option> 
     <form:options items="${banks}" itemLabel="bankName" 
             itemValue="bankCode" /> 
    </form:select> 
Problemi correlati