2011-08-26 68 views

回答

5

這裏是我修復這個問題。其巨大的,但它的工作原理

性別:從Java模型預選賽

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

賬號:綁定的ModelAttribute春天形式

FMT:消息:翻譯米到 「米斯」 (愛沙尼亞語)

<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

在將表單綁定到模型之前,應該將您想要選擇的變量設置爲jsp控制器中所需的值。

Form form = new Form(); 
    form.setFoo("bar"); 
    model.addAttribute("form", form); 

當表單在jsp中生成時,該表單變量將作爲選項列表中的默認選定值。

2

試試這個,它爲我工作

<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

謝謝 - 我一直試圖弄清楚這一整天! –

+1

順便說一句,這種方法的一個優點是你可以顯示多個選擇。 –

5

沒有必要的if else

示例使用:

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代碼

modelAttribute & commandName是互換

<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

我有類似的問題,之後與它作戰的幾天裏,我能夠在我的模型類實現散列和平等的方法來解決它。問題在於,彈簧無法確定下拉菜單中的項目與模型中的值相等。但在模型對象中實現哈希和等於之後,一切正常。

@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; 
} 

並在視圖我有這樣的事情

<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>