如何为JSF bean属性使用国际化?

时间:2013-12-17 01:14:16

标签: jsf internationalization

我想在下面的占位符中显示国际化消息。我正在尝试的所有示例,使用faces-config中定义的消息包,并简单地使用该包名称。但这只有在我们知道要使用哪个消息密钥时才有效。这不是这种情况。

考虑这个基本的例子:

<h:dataTable border="1" value="#{indexBean.webAdminCatalogList}" var="menuItem">
    <h:column>#{message key here}</h:column>
</h:dataTable>

上面的代码循环遍历列表。每个menuItem变量都包含titleMessageCode,它对应于包属性文件中的字段。如何使用menuItem.titleMessageCode获取邮件?是否有一个特殊的JSF标记,或者在构造bean时是否准备了这样的国际化标签?

1 个答案:

答案 0 :(得分:1)

您可以使用括号表示法#{map[dynamicKey]}将动态变量用作映射键。鉴于包名称为text,以下是一个示例:

<h:dataTable border="1" value="#{indexBean.webAdminCatalogList}" var="menuItem">
    <h:column>#{text[menuItem.titleMessageCode]}</h:column>
</h:dataTable>

请注意,这不是特定于JSF,而是特定于EL。那些#{}事物不是JSF的一部分,它们是EL(表达式语言)的一部分。 JSF碰巧正好利用它。另请参阅our EL wiki page