JSF 2.0和资源包示例

在本教程中,我们演示了使用资源包在JSF 2.0中显示消息。 出于可维护性的考虑,始终建议将所有消息放在属性文件中,而不是直接在页面中对消息进行硬编码。

1.属性文件

创建一个属性文件,包含该页面的消息,并将其放入项目的资源文件夹中,请参见下图

messages.properties

message = This is "message"
message.test1 = This is "message.test1"
message.test2 = This is "<h2>message.test3</h2>"
message.test3 = This is "&lt;h2&gt;message.test4&lt;/h2&gt;"
message.param1 = This is "message.param1" - {0}
message.param2 = This is "message.param2" - {0} and {1}

项目文件夹结构。

jsf2-resource-bundles-folder

2.使用资源包

有两种方法可以将属性文件加载到JSF 2.0中。

1.全球资源包
全局加载属性文件,以便所有jsf页面都可以访问消息。 您可以创建一个“ faces-config.xml ”文件并显式声明属性文件。

faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config
    xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
    http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd"
    version="2.0">
     <application>
	  <resource-bundle>
		<base-name>com.mkyong.messages</base-name>
		<var>msg</var>
	   </resource-bundle>
     </application>
</faces-config>

2.本地资源包
在本地或仅用于指定页面加载属性文件。 在需要访问messages.properties中的消息的页面中声明<f:loadBundle />标记。

<f:loadBundle basename="com.mkyong.messages" var="msg"/>

3. JSF 2.0页面

在这种情况下, messages.properties文件的名称为“ msg ”,只需使用“ msg.key ”即可访问该消息。

hello.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:f="http://java.sun.com/jsf/core"      
      xmlns:h="http://java.sun.com/jsf/html">

    <h:body>
      <h2>JSF 2.0 and Resource Bundles Examples</h2>
      <ol>
    	
   	<li><h:outputText value="#{msg.message}" /></li>
	    	
    	<li><h:outputText value="#{msg['message.test1']}" /></li>
	    	
    	<li><h:outputText value="#{msg['message.test2']}" /></li>
    	<li><h:outputText value="#{msg['message.test2']}" escape="false" /></li>
	    	
    	<li><h:outputText value="#{msg['message.test3']}" /></li>
    	<li><h:outputText value="#{msg['message.test3']}" escape="false" /></li>
	    
    	<li>
 	     <h:outputFormat value="#{msg['message.param1']}">
		<f:param value="param0" />
	     </h:outputFormat>
	</li>
	 <li>
	     <h:outputFormat value="#{msg['message.param2']}">
	    	<f:param value="param0" />
	    	<f:param value="param1" />
	     </h:outputFormat>
	  </li>
    	</ol>
    </h:body>
</html>

4.如何运作?

例子1
访问消息的一种正常方法。

<h:outputText value="#{msg.message}" />

//properties file
message = This is "message"

例子2
对于带有点“。”的键 作为名称,您不能使用正常的方式#{msg.message.test1} ,它将无法正常工作。 相反,您应该使用#{msg ['message.test1']}之类的括号。

<h:outputText value="#{msg['message.test1']}" />

//properties file
message.test1 = This is "message.test1"

例子3
要在消息中显示HTML标签,只需添加“ escape ”属性并将其设置为false。

<h:outputText value="#{msg['message.test2']}" />
<h:outputText value="#{msg['message.test2']}" escape="false" />
<h:outputText value="#{msg['message.test3']}" />
<h:outputText value="#{msg['message.test3']}" escape="false" />
			
//properties file
message.test2 = This is "<h2>message.test3</h2>"
message.test3 = This is "&lt;h2&gt;message.test4&lt;/h2&gt;"

例子4
对于参数消息,只需使用<h:outputFormat /><f:param />标记。

<h:outputFormat value="#{msg['message.param1']}">
   <f:param value="param0" />
</h:outputFormat>
<h:outputFormat value="#{msg['message.param2']}">
   <f:param value="param0" />
   <f:param value="param1" />
</h:outputFormat>
			
//properties file
message.param1 = This is "message.param1" - {0}
message.param2 = This is "message.param2" - {0} and {1}

5.演示

网址: http:// localhost:8080 / JavaServerFaces / hello.jsf

jsf2-resource-bundles-example

下载源代码

下载它– JSF-2-Resource-Bundles-Example.zip (8KB)

翻译自: https://mkyong.com/jsf2/jsf-2-0-and-resource-bundles-example/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值