可以将标准的 JavaServer Faces 格式化输出组件
从组件面板拖到可视设计器中,以便创建已格式化的输出文本字段。格式化输出组件提供与输出文本组件类似的功能,但添加了在呈现组件时替换本地化参数的功能。与输出文本一样,格式化输出也呈现为 HTML <span> 标记。
此组件是一个高级组件,因为它需要直接编辑 JSP 代码并了解资源包。您可以在此组件的“属性”窗口中编辑其属性,并使用以下方法将其绑定到数据提供器:在可视设计器中右键单击此组件,然后选择“绑定到数据”选项。
下面简要说明了如何使用此组件:
在页面的“源”视图中,格式化输出组件是 JavaServer Faces 组件标记 <h:outputFormat>,它将其值视为 java.text.MessageFormat 对象的输入。此外,也可以将 <f:param> 标记嵌套在 <h:outputFormat> 标记内,以指定参数 {0}、{1} 等的替换项。
有关有效消息语法的详细信息,请参见以下网址的 java.text.MessageFormat 的 Javadoc 页:
有关本地化和资源包的信息,请参见有关本地化的 部分。
虽然可以将此示例与 <f:loadBundle> 结合使用以获取消息字符串,但您不必使用资源包就可使用格式化输出组件。
以下示例假定您已在名为 count 的会话 Bean 中创建了整型属性,此会话 Bean 用于提取用户购物车中的物品数(有关详细信息,请参见“导航”窗口中的会话 Bean 描述)。格式化输出组件显示购物车中的物品数。
<h:outputFormat binding="#{Page1.formattedOutput1}"
id="formattedOutput1"
style="left: 216px; top: 360px; position: absolute"
value="You have {0} items in your shopping cart.">
<f:param value="#{SessionBean1.count}"/>
</h:outputFormat>
如果已将上一样例中的字符串放在键 itemCount 下面的资源包中,则可以使用以下代码:
<f:loadBundle basename="webapplication1.Bundle"
var="messages"/>
...
<h:outputFormat binding="#{Page1.formattedOutput1}"
id="formattedOutput1"
style="left: 216px; top: 360px; position: absolute"
value="#{messages.itemCount}">
<f:param value="#{SessionBean1.count}"/>
</h:outputFormat>
要使此样例中的代码正常工作,或者对于要在应用程序内提供资源包的任何其他情况,您必须创建一个属性文件来包含这些消息,如创建和删除资源包中所述。
创建新的属性文件之后,该文件将在属性编辑器中打开。对于要添加的每个属性,单击“新建属性”,然后在“新建属性”对话框中输入键和值。例如,上一示例的属性具有名为 itemCount 的键,并且文本为:"You have {0} items in your shopping cart."
当您部署应用程序时,系统会自动将属性文件复制到 WEB-INF/classes/project-name 目录,以便 <f:loadBundle> 标记装入该文件。有关详细信息,请参见装入包组件。