【问题标题】:Enum values as dropdown list枚举值作为下拉列表
【发布时间】:2011-11-27 08:27:45
【问题描述】:

我在从 Enum 类值填充下拉列表时遇到问题。我的枚举类代码是:

package abc.xyz.constants;

public enum StateConstantsEnum
{
           NEWYORK("NY"), 
            FLORIDA("FL"), 
            CALIFORNIA("CA"), 

    private String fullState;

    private StateConstantsEnum( String s )
    {
        fullState = s;
    }

    public String getState()
    {
        return fullState;
    }
}

我想用 NEWYORK、FLORIDA 和 CALIFORNIA 填充下拉列表。我正在以这种方式创建列表并将其添加到 Spring 模型中:

List<StateConstantsEnum> stateList = new ArrayList<StateConstantsEnum>( Arrays.asList(StateConstantsEnum.values() ));

model.addAttribute("stateList", stateList);

然后我尝试使用以下命令填充 JSP 中的下拉列表:

<select name="${status.expression}" name="stateLst" id="stateLst">
    <option value=""></option>
        <c:forEach items="${stateList}" var="option">
                <option value="${option}">
                    <c:out value="${option.fullState}"></c:out>
                </option>
        </c:forEach>
</select>

但我得到一个异常“创建异常:javax.el.PropertyNotFoundException: 类 'abc.xyz.constants.StateConstantsEnum' 没有属性 'fullState'。”

我该如何解决这个问题?非常感谢帮助

【问题讨论】:

    标签: java jsp spring-mvc enums el


    【解决方案1】:

    fullState 是私有的,getState() 是访问者。

    <c:out value="${option.state}"></c:out>
    

    或者将你的 getter 重命名为 getFullstate()

    【讨论】:

    • 我认为&lt;c:out value="${option.state}"&gt;&lt;/c:out&gt; 是正确的。
    • 糟糕.. 我错过了一小块。谢谢。还有一个问题,这是打印 NY、FL、CA,而不是 NEWYORK、FLORIDA 和 CALIFORNIA。有什么想法吗?
    • 然后使用${option}。实际上,“全州”名称具有误导性。反之亦然。它有一个州的缩写。
    • 感谢 BalusC 的帮助和建议。我会改的。
    【解决方案2】:

    在您的 JSP 中,您可以使用类似的:

    <form:select path="*">
      <form:options items="${stateList}" itemLabel="fullState"  />
    </form:select>
    

    它将提取您的列表 (stateList) 中的所有元素,如果您不指定 itemLabel 和 itemValue,它将获取您的枚举值 当然你必须将你的getter设置为getFullState,并在你的页面中声明springmvc标签

    【讨论】:

      猜你喜欢
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 2020-06-23
      • 1970-01-01
      相关资源
      最近更新 更多