我正在使用Spring作为HTML表单。其中一个字段是enum
,因此我想要一个HTML下拉列表(<option>
标记)。我的枚举名称与toString()
值不同。例如:
public enum Size {
SMALL("Small"), LARGE("Large"), VERY_LARGE("Very large");
private final String displayName;
private Size(String displayName) {
this.displayName = displayName;
}
public String toString() {
return displayName;
}
}
我希望用户看到toString()
值。通常,这是使用Spring选项标记的itemLabel
来完成的。
<form:options items="${enumValues}" itemLabel="beanProperty" />
但是toString()
不是bean属性,因为它不以“get”开头。有没有办法设置itemLabel
使用toString的值而不必创建一个getter?
答案 0 :(得分:6)
我知道这已经有几年了,现在必须解决,但我想我会为未来的人添加解决方案。
只需删除[itemLabel =“beanProperty”]部分即可。它将使用toString来打印值。
答案 1 :(得分:2)
为什么不在你的枚举中添加一个公共getDisplayName()方法?
答案 2 :(得分:1)
您是否尝试过使用Spring强大的AOP模型从一个地方扩展您的枚举?看起来,根据您拥有的枚举数量,您可以轻松地向所有人添加getDisplayName()
方法,只返回toString()
值。