本机MVC Web项目(不能使用Hibernate或Spring)提供“转换表”以将bean的变量中的值修改为呈现友好格式的最佳方法是什么?为每个变量提供自定义“web Getter方法”似乎很差的OO实践。
例如:名为 status 的变量可以在常量层中填充值“A”,“I”,“D”或“U”,因此在bean中存储它那样。但在页面上,这四个值分别转换为“活动”“非活动”“已删除”和“未定义”。在哪里以及如何容纳这种翻译知识?
(另外,Java webdev社区是否有这种“翻译表”的特定名称?在这里搜索已经解答的解决方案时,我的词汇量不足。)
答案 0 :(得分:2)
为此,通常使用资源包,可以使用标准JSTL <fmt:xxx>
标记进行访问,甚至可以使用JSTL标记正在使用的ResourceBundle
API以编程方式进行访问。
E.g。 status.properties
包
com.example.i18n
文件
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>
答案 1 :(得分:0)
执行此操作的一种常见方法是使用表示级别bean以及域数据bean。将代码放在表示bean中,以将域bean(您已经拥有的)中的值复制到可显示的值。类似地,您有代码,也可以在表示bean中,在提交表单时转换回来。 (假设您有办法在网站上为该数据组件创建。
如果转换代码变得复杂或整个应用程序中各种数据对象的转换之间存在重要的共性,您可以将转换提取到一组类,这些类具有转换特定类型数据的作用或者,您可以拥有一些实用程序类,这些实用程序类具有执行常见转换的方法,并且它们被表示bean用于使转换代码变得小而紧凑。