在本地MVC web项目(不能使用Hibernate或Spring)中提供一个"转换表"来修改bean变量中的值以表示友好的格式,这是什么最好的方法?为每个变量提供自定义的"web Getter方法"似乎是糟糕的OO实践。
例如:一个名为status的变量可以在持久化层中使用值' a '、'I'、'D'或'U'填充,因此在bean中它以这种方式存储。但在页面上,这四个值分别转换为"活动"、"未活动"、"删除"one_answers"未定义"。这些翻译知识存放在哪里,如何存放?(另外,Java web开发社区对这种"翻译表"有一个特定的名称吗?当我在这里搜索一个已经回答的解决方案时,我有点词汇不足。)
为此,通常使用的资源包可以通过标准JSTL <fmt:xxx>
标记访问,甚至可以通过编程方式使用JSTL标签在后台使用的ResourceBundle
API。
。com.example.i18n
包中的status.properties
文件
status.A = Active
status.I = Inactive
status.D = Deleted
status.U = Undefined
with(如果您有一个具有此属性的bean为${bean}
)
<fmt:bundle basename="com.example.i18n.status">
Status: <fmt:message key="status.${bean.status}" />
</fmt:bundle>
或
<fmt:bundle basename="com.example.i18n.status" prefix="status.">
Status: <fmt:message key="${bean.status}" />
</fmt:bundle>
参见:
- 如何国际化一个Java web应用程序?
实现此目的的一种常见方法是同时拥有一个表示级bean和一个域数据bean。在表示bean中放入代码,将域bean(您已经拥有的)中的值复制为可显示的值。类似地,在提交表单时,也可以在表示bean中进行代码转换。(假设你有办法在网站上创建该数据组件。
如果转换代码变得复杂或有显著的共性之间的转换为各种数据对象在整个应用程序可以提取转换为一组类,他们的工作将特定类型的数据也可以有一些实用工具类,方法使用的常见的转换和他们表示bean转换码小而紧凑。