Есть ли способ выбрать текущее значение в раскрывающемся списке Spring MVC на <form:options>
?
Spring Форма MVC: выберите выбранное значение?
Ответ 1
Устанавливает "выбранный" по мере необходимости на основе привязанного значения.
Ответ 2
Вот мое решение этой проблемы. Его массивный, но он работает
genders: отбор из java-модели
// model.addAttribute("genders", genders);
аккаунт: привязанный атрибут model для форм spring
fmt: message: переводит 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>
Ответ 3
Не нужно использовать, если 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>
Ответ 4
Попробуй, это работает для меня
<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>
Ответ 5
У меня была аналогичная проблема, и после нескольких дней борьбы с ней я смог исправить ее, реализовав хэш и равные методы в моем классе модели. Проблема в том, что spring не смог определить, где элемент в раскрывающемся списке равен значению в модели. Но после реализации хеша и равных в объекте модели все работало нормально.
@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>
Ответ 6
перед привязкой формы к модели, вы должны установить любую переменную, которую вы хотите выбрать, в нужное значение в контроллере вашего jsp.
Form form = new Form();
form.setFoo("bar");
model.addAttribute("form", form);
Когда форма построена в jsp, эта переменная формы будет выбранным по умолчанию значением в вашем списке опций.