Forms Spring MVC表单:选择所选值?
有没有办法通过Spring MVC在下拉列表中选择当前值?根据绑定值设置“已选择”Forms Spring MVC表单:选择所选值?,forms,spring-mvc,Forms,Spring Mvc,有没有办法通过Spring MVC在下拉列表中选择当前值?根据绑定值设置“已选择” 这是我解决这个问题的方法。它是巨大的,但它是有效的 genders:来自java模型的限定符 // model.addAttribute("genders", genders); 帐户:spring窗体的绑定modelattribute fmt:信息:将m翻译成Mees爱沙尼亚语 <form:select path="cfGender"> <c:forEach var="item" items
这是我解决这个问题的方法。它是巨大的,但它是有效的 genders:来自java模型的限定符
// model.addAttribute("genders", genders);
帐户:spring窗体的绑定modelattribute
fmt:信息:将m翻译成Mees爱沙尼亚语
<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>
在将表单绑定到模型之前,应该将希望选择的变量设置为jsp控制器中所需的值
Form form = new Form();
form.setFoo("bar");
model.addAttribute("form", form);
在jsp中构建表单时,该表单变量将是选项列表中的默认选定值。试试这个,它对我有用
<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>
不需要使用,如果其他
例如:
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);
我也有类似的问题,经过几天的努力,我能够通过在我的模型类中实现hash和equal方法来解决这个问题。问题在于spring无法确定下拉列表中的某个项在何处等于模型中的某个值。但是在模型对象中实现了hash和equals之后,一切都很好
@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>
这个问题还不清楚。什么是“当前值”。你想在哪里选择它?谢谢-我一整天都在想这个问题!顺便说一句,这种方法的一个优点是你可以显示多个选项。我认为当我们在地图上有两种类型的选项时,这会起作用。但这不适用于对象列表,例如列表。
<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>