此高级组件会创建一个定制 <f:loadBundle> 标记,用于将资源包作为 Map 公开。
可使用此标记创建可本地化的 Web 应用程序。以下样例最好地说明了其用法,该样例在 JSP 页中显示了最终结果:
您具有一个名为 com.foo.mypackage.resources 的标准资源包,并且要使用该资源包来本地化 JSP 页上的提示。以下 JSP 代码将会对消息键 my.message.key 下面的 outputText 所呈现的值执行本地语言环境查找。
<f:view>
...
<f:loadBundle basename="com.foo.mypackage.resources" var="msgs"/>
...
<h:outputText value="#{msgs['my.message.key']}"/>
...
</f:view>
此 JSP 代码是有效的,因为 <f:loadBundle> 合成 java.util.Map 对象以包装资源包,然后将该对象作为请求范围属性存储在 var 属性指定的键下面。因为值绑定表达式知道如何浏览 Map,所以此技术非常适于本地化字段提示等内容。
通常,如果您希望在应用程序内提供资源包,则必须创建一个属性文件以包含消息,如创建和删除资源包中所述。
创建新的属性文件之后,该文件将在属性编辑器中打开。对于要添加的每个属性,单击“新建属性”,然后在“新建属性”对话框中输入键和值。
当您部署应用程序时,系统会自动将属性文件复制到 WEB-INF/classes/project-name 目录,以便 <f:loadBundle> 标记装入该文件。在使用包文件时,可以为 <f:loadBundle> 标记的 basename 属性指定一个值,它是项目名称(与程序包名称相同)和属性文件基本名称的组合(用句点分开)。例如,如果项目名称为 webapplication1,属性文件名称为 Bundle,则代码为:
<f:loadBundle basename= "webapplication1.Bundle " var= "var-name"/>