jsf集成spring_Spring和JSF集成:国际化和本地化

本文介绍了一种在JSF应用程序中使用Spring MessageSource接口的方法,通过<s:messageSource>组件替代<f:loadBundle>,实现更好的消息管理和国际化。
摘要由CSDN通过智能技术生成

jsf集成spring

如果您正在开发针对多种语言的JSF应用程序,那么您可能很熟悉<f:loadBundle>标记。 即使您的应用程序不支持使用消息捆绑包进行国际化仍然是一个好主意。 在<f:loadBundle>标签的作用下,它从Java java.util.ResourceBundle中读取消息,尽管这可以工作,但Spring开发人员通常更喜欢org.springframework.context.MessageSource接口。

作为<f:loadBundle>的替代方案,我一直在开发一个新的<s:messageSource>组件,该组件可用于公开来自任何Spring MessageSource的消息,并提供其他一些优点。

新组件是<f:loadBundle>的直接替代。

<s:messageSource source="#{messageSource}" var="messages"/>
<p>
  <h:outputText value="#{messages.hello}"/>
</p>

source属性可以是任何解析为MessageSource实例的EL表达式。 如果未指定源,则将使用Spring ApplicationContextvar属性是将用于访问消息的变量的名称。

与标准JSF不同,要加载的消息的密钥将根据要呈现的页面的ID构建。 例如,假设上面的页面来自文件WEB-INF / pages / messages / simple.xhtml ,则用于加载hello消息的密钥将为pages.messages.simple.hello 。 使用这些复合键可以防止消息键冲突,并使页面标记清晰美观。 如果需要,可以使用prefix属性覆盖此行为。

如果您在XHTML中引用了忘记定义的消息,则将看到警告消息(在开发中)或抛出异常(在生产中)。

与标准JSF一样,您的消息并包含与<h:outputFormat>一起使用的占位符

pages.message.simple.welcome=Welcome to {1} with {0}
<h:outputFormat value="#{messages.welcome}">
  <f:param value="Spring"/>
  <f:param value="JSF"/>
</h:outputFormat>

<h:outputFormat>标签有点冗长,因此为了方便起见,Spring消息可以用作Map 。 这使您可以更简洁地引用占位符:

<h:outputText value="#{messages.welcome['Spring']['JSF']}"/>

相同的语法允许您将Java对象映射到消息。 默认情况下,对象是通过从类名称构建消息键来映射的。 例如,以下类:

package org.example;
public class ExampleObject {
}

可以在JSF中引用:

<h:outputText value="#{messages[exampleInstance]}"/>

解决以下消息:

org.example.ExampleObject=example

对于枚举对象,消息键包括枚举名称和类:

package org.example;
public enum ExampleObject {
  ONE, //mapped to message key org.example.ExampleObject.ONE
  TWO  //mapped to message key org.example.ExampleObject.TWO
}

对象消息还可以引用应构成消息一部分的属性:

org.example.PersonName=Name is {first} {last}
...

package org.example;
public class PersonName {
  ...
  public String getFirst() {...}
  public String getLast() {...}
}

您还可以通过使用实现org.springframework.springfaces.message.ObjectMessageSource接口的消息源来定义自己的对象消息策略。

如果您想查看其中的任何代码,请查看GitHub Project中的org.springframework.springfaces.messageorg.springframework.springfaces.message.ui软件包。

参考: Phil Webb博客博客中来自我们JCG合作伙伴 Phillip Webb的Spring和JavaServer Faces集成:国际化和本地化


翻译自: https://www.javacodegeeks.com/2012/06/spring-jsf-integration.html

jsf集成spring

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值