【问题标题】:Is it good practice to use property text placeholders inside JSPs?在 JSP 中使用属性文本占位符是一种好习惯吗?
【发布时间】:2014-09-09 18:49:24
【问题描述】:

对于我参与过的许多项目,编程团队的工作方式是将 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 个 xhtml,将有 1000 个 .properties 文件要加载,这需要更多的 CPU 周期来加载和注入静态文本片段
  • 如果您使用 WebFlow 并且有传递到其他流的流,则必须复制属性,这意味着有时您必须将相同的属性放在许多不同的属性文件中才能正确呈现
  • 难以阅读的代码;如果您知道您只想处理文本“这将是此页面的标题”,您需要首先从属性文件中确定 xhtml 上的位置 - 您不能简单地查看 xhtml并清楚地看到内容在呈现后将如何布局。

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

如果它的编码为 101,我深表歉意,但我在 Google 周围搜寻了一下,找不到该模式的原因。

非常感谢

【问题讨论】:

    标签: java html jsp jsf spring-webflow


    【解决方案1】:

    这是国际化内容的常见做法。 您为每种语言(或区域设置)创建一个属性文件,并使用一种动态方式来根据上下文解析要加载的属性文件。 (例如浏览器发送的语言 HTTP 标头)。

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

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

    【讨论】:

      猜你喜欢
      • 2021-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-03
      • 1970-01-01
      • 2016-02-10
      相关资源
      最近更新 更多