为不同的复合组件指定不同的错误消息

时间:2012-02-12 07:12:13

标签: localization jsf-2 composite-component

是否有办法为不同类型的复合组件提供必需的消息?

我希望能够在消息包中说出以下内容

javax.faces.component.UIInput.REQUIRED=Please enter a value for {0}
com.anon.sandbox.jsf.component.NameField.REQUIRED=ENTER A {} OR DIE
com.anon.sandbox.jsf.component.EmailField.REQUIRED=You forgot to enter a {0} address

我可以通过为每种输入字段实现自定义验证器来实现这一点,但考虑到我想要自定义的唯一行为是错误消息,这看起来有点过分。

1 个答案:

答案 0 :(得分:1)

使用requiredMessage属性指定它们。

<h:inputText ... requiredMessage="#{cc.resourceBundleMap.requiredMessage}" />

对于您不知道的情况,#{cc.resourceBundleMap}引用由.properties文件标识的复合组件特定资源包,其文件名与同一文件夹中的复合组件相同。

因此,假设您有一个复合组件文件foo.xhtml,那么您可以在foo.properties(以及foo_en.propertiesfoo_es.properties等)中指定本地化消息它们位于同一个文件夹中。然后,前面提到的#{cc.resourceBundleMap}可以获得这些本地化的消息。