我有一个枚举(例如Status
),其中包含状态代码列表,我想在页面上显示这些状态的有意义字符串(将Status
绑定到字符串)。
我还有Project
对象,其中Status
引用CustomPropertyEditor
成功使用Status
将String
绑定到Project
Status
}是表单上的命令对象。
但是当我想在页面上显示不属于任何表单的String
列表时,如何将Project
绑定到有意义的Status
?
以下代码在显示<c:forEach items="${projects}" var="project" varStatus="row">
<tr>
<td><c:out value="${project.status}" />
</tr>
</c:forEach>
个对象时始终使用默认的枚举字符串:
{{1}}
答案 0 :(得分:1)
我这样做的方法是使用spring的MessageSource
<c:forEach items="${projects}" var="project" varStatus="row">
<tr>
<td><spring:message code="status.code.${project.status}" />
</tr>
</c:forEach>
然后你需要在messages_en.properties(或其他语言文件)中使用相应的键:
status.code.Foo=The status is foo
status.code.Bar=The status is bar
Foo和Bar在您的Enum中出现。
答案 1 :(得分:0)
假设您已将Status
声明为public enum Status
,<c:out value="${project.status}" />
会调用Status.toString()
。进一步假设您没有覆盖toString
枚举中的方法Status
,使用java.lang.Enum.toString()
的默认实现(java.lang.Enum
是所有枚举的基类)。 java.lang.Enum.toString()
只返回Enum.name
。
您可以覆盖toString()
枚举中的Status
方法,返回对用户更有意义的值,也可以调用表示层中枚举类的任何方法。例如,如果您使用方法Status.getTitle()
,则可以将其用作<c:out value="${project.status.title}" />
。