在JSP中使用属性文本占位符是一种好习惯吗?

时间:2014-07-18 15:07:57

标签: java html jsp jsf spring-webflow

对于我参与过的许多项目,编程团队的工作方式是将xhtml文件中的每个静态文本放入属性文件中。例如:

XHTML =

...
<h1>${messages.resourceBundle['key.to.static.text.placeholder']}</h1>
...

messages.properties =

...
key.to.static.text.placeholder=This will be the heading for this page only
...

是否有人能够解释这方面的优势是什么?

到目前为止,我只能看到以下缺点:

  • 对任何xhtml文件进行更改需要您搜索正确的.properties文件,然后单个属性进行更改
  • 如果其他人重新使用了属性,那么删除它们会变得棘手,因为您必须确定没有其他页面引用该属性,因此在多次更改请求轮次之后,属性文件会变得很大且具有冗余属性
  • 如果有1000个xhtmls,则会有1000个.properties文件加载,这是cpu加载和注入静态文本的更多周期
  • 如果你使用WebFlow并且有流传入其他流,则必须复制属性,这意味着有时你必须在许多不同的属性文件中放置相同的属性才能正确呈现
  • 难以阅读代码;如果您知道要处理文本,那么这将是此页面的标题&#39;只是,你需要首先从属性文件中找出xhtml上的内容 - 你不能只看到xhtml并清楚地看到内容在呈现后如何布局。

我能看到的唯一优势是文本重用和可能的html转义。

道歉,如果它编码101,但我已经围绕谷歌进行了搜索,并且无法找到该模式的推理。

非常感谢

1 个答案:

答案 0 :(得分:4)

这是内容国际化的常见做法。 您可以为每种语言(或语言环境)创建一个属性文件,并使用动态方法解决根据上下文加载哪个属性文件。 (例如,浏览器发送的语言HTTP标头)。

它可以说比为每种语言提供1个jsp文件更灵活,并且仍然可以处理复数或风格差异可能会改变您编写本地化文本的方式的复杂情况。

这是标准的JDK功能,查找资源包。 您不必为每个jsp构建1个文件(也许您的框架以这种方式工作?),尽管这样做可以帮助编写翻译的人。