【问题标题】:Spring MVC - populate enum to dropdownlistSpring MVC - 将枚举填充到下拉列表
【发布时间】:2014-03-28 04:15:01
【问题描述】:

我有这样的表格:

<form:form method="POST" action="searchProjects" commandName="projectcriteria">
    <table>
        <tr>
            <td class="label"><spring:message code="number" /></td>
            <td><form:input path="number" /></td>
            <td class="label"><spring:message code="customer" /></td>
            <td><form:input path="customer" /></td>
        </tr>
        <tr>
            <td class="label"><spring:message code="name" /></td>
            <td><form:input path="name" /></td>
            <td class="label"><spring:message code="status" /></td>
            <td>
                <form:select path="status">
                    <option value=""><spring:message code="please_select" /></option>
                    <c:forEach var="enum" items="${allStatus}">
                        <option value="${enum}"><spring:message code="${enum.statusEnum}" /></option>
                    </c:forEach>
                </form:select>
            </td>
        </tr>
        <tr>
            <td colspan="4" style="text-align: center;">
                <input type="submit" value="<spring:message code="search"/>" />
                <input type="button" value="<spring:message code="reset_criteria"/>" />     
            </td>
        </tr>
    </table>
</form:form>

Projectcriteria 和 StatusEnum 是这样的:

public enum StatusEnum {
    INV("Invalidate"),
    TOV("Validate"),
    VAL("Validated"),
    FIN("Finished");

    private String name;

    private StatusEnum(String name) {
        this.name = name;
    }

    public String getStatusEnum() {
        return this.name;
    }
}

public class ProjectCriteria {
    private long number;

    private String name;
    private String customer;
    private StatusEnum status;

    /**
     * @return the number
     */
    public long getNumber() {
        return number;
    }

    /**
    * @param number the number to set
    */
    public void setNumber(long number) {
        this.number = number;
    }
    /**
    * @return the name
    */
    public String getName() {
        return name;
    }
    /**
    * @param name the name to set
    */
    public void setName(String name) {
        this.name = name;
    }
    /**
    * @return the customer
    */
    public String getCustomer() {
        return customer;
    }
    /**
    * @param customer the customer to set
    */
    public void setCustomer(String customer) {
        this.customer = customer;
    }
    /**
    * @return the status
    */
    public StatusEnum getStatus() {
        return status;
    }
    /**
    * @param status the status to set
    */
    public void setStatus(StatusEnum status) {
        this.status = status;
    }
}

如何将 ProjectCriteria 类中的 StatusEnum 属性填充到 jsp 页面。我必须在 Controller 中添加什么?

非常感谢您的帮助。

【问题讨论】:

标签: java spring spring-mvc enums jstl


【解决方案1】:

在控制器方法中添加您的 enum 值,向相应页面发出请求,即

model.addAttribute("enumValues",StatusEnum.value());

然后使用 foreach 在下拉菜单中迭代 enumValues

【讨论】:

    【解决方案2】:

    你可以试试这个(抱歉代码没有测试):

    <c:forEach var="enum" items="${StatusEnum.values()}">
        <option value="${enum}"><spring:message code="${enum.name}" /></option>
    </c:forEach>
    

    注意:如果您的 enum 类有包名,您可能必须在 items 属性中包含完全限定的类名。您也可以将enum 作为模型属性从您的控制器传递(?)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      • 1970-01-01
      • 2015-01-02
      • 2014-01-01
      • 1970-01-01
      相关资源
      最近更新 更多