我正面临从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'。“
如何解决此问题?非常感谢
答案 0 :(得分:7)
fullState
是私有的,getState()
是访问者。
<c:out value="${option.state}"></c:out>
或者将您的getter重命名为getFullstate()
。
答案 1 :(得分:0)
<form:select path="*">
<form:options items="${stateList}" itemLabel="fullState" />
</form:select>
它将提取你的liste(stateList)中的所有元素,如果你没有指定itemLabel和itemValue,它将获取你的枚举值 当然你必须将你的getter设置为getFullState,并在你的页面中声明springmvc标签