Spring Форма MVC: выберите выбранное значение?

Есть ли способ выбрать текущее значение в раскрывающемся списке Spring MVC на <form:options>?

Ответ 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, эта переменная формы будет выбранным по умолчанию значением в вашем списке опций.