2016-05-16 79 views
2

我有三个页面,有三个不同的标题。Struts2中的全局资源包 - 粒度最佳实践?

1个分页标题名称:壹:你好:你好

第2页分页标题名称:第二页:你好:你好

第3页分页标题名称:第三页:您好:您好:您好

哪个更好做,实施和最佳实践明智:


解决方案#1

内global.properties

tab.title.page.number.one = Page One 
tab.title.page.number.two = Page Two 
tab.title.page.number.three = Page Three 
tab.title.colon    = : 
tab.title.hello    = Hello 
tab.title.hi    = Hi 

然后在jsp中的每个页面的title标签

1内:

<title> 
    <s:text name="tab.title.page.number.one"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hello"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hi"/> 
</title> 

第2页:

<title> 
    <s:text name="tab.title.page.number.two"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hello"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hi"/> 
</title> 

第3页:

<title> 
    <s:text name="tab.title.page.number.three"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hello"/> 
    <s:text name="tab.title.colon"/> 
    <s:text name="tab.title.hi"/> 
</title> 

OR


溶液#2

内global.properties

tab.title.page.one = Page One : Hello : Hi 
tab.title.page.two = Page Two : Hello : Hi 
tab.title.page.three = Page Three : Hello : Hi 

然后在JSP页面的每个标题标签中:

第1页:

<title><s:text name="tab.title.page.one"/></title> 

第2页:

<title><s:text name="tab.title.page.two"/></title> 

第3页:

<title><s:text name="tab.title.page.three"/></title> 

我的合作开发者认为,这样的HelloHi:是可重用的。但它只是静态文本。这并没有改变。哪个更适合使用实现,编码标准,性能(LOL)?谢谢!

+1

我经常使用autocompleter通过短名称使用标签,但是您可以优化LOL。不要多次使用's:text'来表现明智。 –

回答

2

这是我完全国际化的应用程序的经验。 您不应该为定义不同的键值。

考虑你想为user name定义一个标签。

你能做的就是为

lable.username=User Name 

OR

lable.inputform.username=User Name 
lable.registeration.form.username=User Name 
lable.activate.form.username=User Name 

第一种方法是当你在资源包少做要好得多。 UserName在整个应用程序中只有User Name,如果你想改变它是相当合理的,一个改变应该是足够的。

请考虑这个庞大的资源包,很难维护,需要更多的内存。资源包将在任何时间:)

我也建议不要通过增加键来构建句子变成巨大的:

例如

lable.please+ lable.add + lable.your + lable.username 

让它为:

form.message= Please add your user name 

它让你的jsp或动作非常复杂,并且你不会获得很多。

所以我一般都认同你,但你的大学方法应该考虑可重用的价值!

2

几点思考太长,无法为注释:

它没有任何意义,国际化冒号:它会改变吗?不太可能。如果它可能,请考虑使用自定义标签/等。以包装视图级别的静态文本。

在密钥本身中使用非I18N文本有点奇怪,例如,使用.greeting而不是.hello

page.number.one似乎是不必要的冗长,而不是page.one或只是page1。或者,不要直接将其与标签挂钩,因为您可能想要将其重新用于实际页面标题或标题,只需page1.title即可。

坚果壳:我都喜欢重复使用,但IMO属性文件对于您展示的很多东西都是错误的地方。使用自定义标记或实用程序方法来访问需要更改的实际属性。我真的很喜欢用I18N的数据库而不是属性文件来保存这些东西;它们更容易处理使用一个微不足道的前端,并且适当的缓存速度也一样快。)