Spring MVC form:select selected value?

我与影子孤独终老i 提交于 2021-02-07 05:10:48

问题


Is there any way to select current value in dropdown list by Spring MVC by <form:options>?


回答1:


Sets 'selected' as appropriate based on bound value.

http://static.springsource.org/spring/docs/2.0.x/reference/spring-form.tld.html#spring-form.tld.options




回答2:


Here's my fix to this problem. Its massive, but it works

genders: qualifier from java model

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

account: binded modelattribute for spring forms

fmt:message: translates m to "Mees" (Estonian)

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


No need to use if else

Example:

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 Code

modelAttribute & commandName are interchangeable

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


Try this, it works for me

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


I had similar problem and after several days of battling with it, I was able to fix it by implementing hash and equal methods in my model class. The problem is that spring was not able to determine where an item in the drop down is equals to a value in the model. But after implementing the hash and equals in the model object, everything worked fine.

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

And in the view i have something like this

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


prior to binding the form to the model, you should set whatever variable you want to be selected to the desired value in the controller of your jsp.

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

When the form is built in the jsp, that form variable will be the default selected value in your options list.



来源:https://stackoverflow.com/questions/7202368/spring-mvc-formselect-selected-value

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!