将标签等放在属性文件中是否是反模式(与JSP和Web开发相关)

时间:2009-05-22 01:59:00

标签: jsp java-ee anti-patterns

我看到很多J2EE开发人员将标签放在属性文件中但不使用不同的Locales。因此,您会获得大量缺少的属性异常。最重要的是它使调试和读取JSP页面变得困难。因此,随着时间的推移,您有数千行属性文件可能会或可能不会与JSP文件一起使用。

对我来说,这似乎是一个糟糕的设计,特别是如果你不打算使用不同语言的属性文件,并根据Locale改为说英语或法语。

我只是想知道你是否有同感,并且有一个J2EE / JSP反模式的列表或URL。

2 个答案:

答案 0 :(得分:3)

从模板中分离内容始终是一种好习惯。这样,您不需要为每个愚蠢的上下文更改/拼写错误/打嗝重建,重新部署和/或重新启动整个事情。 ResourceBundle API(标准在JSTL的fmt taglib和其他i18n / l10n标记库后面使用)smart足以在每次更改时动态重新加载资源文件(至少,如果你是使用JDK 1.6或更新版本,其中包含those enhancements builtin)。

此外,无论何时你想去i18n或想要从属性文件更改为数据库表或其他东西,那么你不需要更改模板来从中提取内容 - 这会让你更多如果你以后再做。

将模板中的内容和位置相互关联只需要做一些工作,我可以想象这是开发人员/维护人员的主要恐惧。我自己撰写密钥以使它们大致匹配pagename.parentid.elementtype.elementname.contenttype(粗略地说;并非所有这些都是必要的,但它提供了一个想法),以便它已经立即清楚它所属的位置。

E.g。一个home.login.label.username.tooltip键,指向home.jsp

<form id="login">
    <label for="username" title="${text['home.login.label.username.tooltip']}">

保持这种惯例一致,你会发现维持这一切变得更加容易。

答案 1 :(得分:1)

将标签放在属性文件中绝对是一个好习惯。即使您现在不打算国际化,也可能在将来发生这种情况。它还可以帮助您在页面中使用一致的命名。

我不知道你为什么会得到财产例外。在大多数框架中,如果找不到用户区域设置的属性文件,系统将读取默认(英文)文件。

您需要习惯使用从外部属性文件读取的字段来读取JSP页面。它并不那么难,而且好处远远超过了麻烦。