JSF全面理解之消息处理

  1. Locale locale = facesContext.getViewRoot().getLocale() 
 JSF的消息处理主要围绕着javax.faces.application.FacesMessage,javax.faces.context.FacesContext,java.util.Locale,h:message,h:messages进行。

javax.faces.application.FacesMessage:JSF消息定义。
javax.faces.context.FacesContext:JSF 具有TheadLocale属性的容器。
java.util.Locale:JSF通过它来作多语言支持了。
h:message/h:messages:用来在JSP里显示JSF消息的标签了。

JSF消息的添加:
JSF里添加JSF消息只需要简单地调用FacesContext.addMessage即可。这个方法可以把指定的消息注册到facesContext里,之后便可在JSP里加以显示。
facesContext.addMessage(clientId, FacesMessage);
clientId:与该消息相关联的组件ID,未指定的时候,为全局消息
FacesMessage:JSF消息体定义。它有3个属性:
1)    FacesMessage.Severity:消息的级别。可以为FacesMessage.SEVERITY_INFO(一般信息),FacesMessage.SEVERITY_WARNING(警告),FacesMessage.SEVERITY_ERROR(错误),FacesMessage.SEVERITY_FATAL(致命错误)。
2)    消息概要
3)    消息详细内容
使用例:
FacesMessage msg = new FacesMessage(FacesMessage.SEVERITY_ERROR,
                        summary,
                        detail);
FacesContext.getInstance().addMessage(clientId, msg);

JSF消息的显示:
JSF消息的显示就更简单了,只需在JSP里调用h:message或h:messages即可。
例:
<h:messages globalOnly="true" styleClass="error" showSummary="" showDetail="" layout="table" />
globalOnly:为true时,只显示全局消息。
showSummary:是否显示消息概要。
showDetail:是否显示消息详细。
其他:请查看相应的资料,这里就不做介绍了。

<h:message for="username" showSummary="" showDetail=""></h:message>
for:跟消息绑定的组件ID。

上面简单地介绍了如何添加,以及如何在画面里显示JSF消息。但如何通过资源文件显示定义的消息呢?

下面我们从下面两方面来介绍:
1,通过JSF message-bundle定义的资源文件配置消息
2,在自定义的资源文件里配置消息

通过JSF message-bundle定义的资源文件配置消息
在faces-config.xml里加上类似如下定义:
<script src="/images/code/js/shCore.js" type=text/javascript></script> <script language=javascript> </script> <script src="/images/code/js/shBrushJava.js" type=text/javascript></script>
 
    1. <faces-config>    
    2. <application>   
    3.   <message-bundle>Messages</message-bundle>   
    4.   <locale-config>   
    5.    <default-locale>en</default-locale>   
    6.    <supported-locale>kr</supported-locale>   
    7.    <supported-locale>ja</supported-locale>   
    8.    <supported-locale>zh</supported-locale>   
    9.   </locale-config>   
    10. </application>   
    11.   
    12. ...   
    13. </faces-config>  


然后,为message-bundle Messages分别定义各自的配置文件:比如英文为Messages_en.properties,韩文为 Messages_kr.properties,日文为Messages_ja.properties,中文为 Messages_zh.properties。

定义消息:
key=message value … {0}…{1}..
定义好之后,便可以通过
 
    1. Locale locale = facesContext.getViewRoot().getLocale() 
    Locale locale = facesContext.getViewRoot().getLocale()  


取得用户的语言配置;
  1. String messageBundle = ResourceBundle.getBundle( bundleName, locale,   
  2.                         Thread.currentThread().getContextClassLoader() );  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值