Spring MVC form:select selected value?

后端 未结 6 1398
遇见更好的自我
遇见更好的自我 2021-02-19 09:56

Is there any way to select current value in dropdown list by Spring MVC by ?

相关标签:
6条回答
  • 2021-02-19 10:13

    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>
    
    0 讨论(0)
  • 2021-02-19 10:18

    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>
    
    0 讨论(0)
  • 2021-02-19 10:19

    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>
    
    0 讨论(0)
  • 2021-02-19 10:29

    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>
    
    0 讨论(0)
  • 2021-02-19 10:30

    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

    0 讨论(0)
  • 2021-02-19 10:40

    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.

    0 讨论(0)
提交回复
热议问题