JSF中的国际化,何时使用消息包和资源包?
何时以及如何在JSF中的国际化,何时使用消息包和资源包?,jsf,localization,internationalization,Jsf,Localization,Internationalization,何时以及如何在faces config.xml中使用和标记进行本地化?我不太清楚这两者之间的区别 每当您想要覆盖JSF验证/转换所使用的JSF默认警告/错误消息时,就会使用。 您可以在的第2.5.2.4章中找到默认警告/错误消息的键 例如,com.example.i18n包中的Messages\u xx\u xx.properties文件覆盖默认的required=“true”消息: com/example/i18n/Messages\u en.properties javax.faces.co
faces config.xml
中使用
和
标记进行本地化?我不太清楚这两者之间的区别
每当您想要覆盖JSF验证/转换所使用的JSF默认警告/错误消息时,就会使用
。
您可以在的第2.5.2.4章中找到默认警告/错误消息的键
例如,com.example.i18n
包中的Messages\u xx\u xx.properties
文件覆盖默认的required=“true”
消息:
com/example/i18n/Messages\u en.properties
javax.faces.component.UIInput.REQUIRED={0}:此字段为必填字段
com/example/i18n/Messages\u nl.properties
javax.faces.component.UIInput.REQUIRED={0}:Dit veld是vereist
可以按如下方式配置(不带区域设置说明符\u xx\u xx
和文件扩展名!):
com/example/i18n/Text\u nl.properties
main.title=Titel van hoofd pagina
main.head1=Bovenste kop van hoofd pagina
main.form1.input1.label=标签van input1 van form1 van hoofd pagina
可以按如下方式配置(不带区域设置说明符\u xx\u xx
和文件扩展名!):
ValidationMessages(JSR303bean验证) 自JavaEE6/JSF2以来,还有新的JSR303bean验证API,它由包的
@NotNull
、Size
、@Max
等注释表示。您应该理解,这个API与JSF完全无关。它不是JSF的一部分,但JSF恰好在验证阶段支持它。也就是说,它确定并识别JSR303实现(例如Hibernate Validator)的存在,然后将验证委托给它(顺便说一句,可以使用
禁用)
根据的第4.3.1.1章,自定义JSR303验证消息文件需要有确切的名称ValidationMessages\u xx\u xx.properties
,并且需要放在类路径的根目录中(因此,不在包中!)
本地化 在上述示例中,文件名中的
\u xx\u xx
表示(可选)语言和国家代码。如果完全没有,那么它将成为默认(回退)包。如果存在该语言,例如\u en
,则当客户端在HTTP请求头中明确请求该语言时,将使用该语言。这同样适用于国家,例如\u en\u US
或\u en\u GB
您可以在faces config.xml
的
元素中为消息和资源包指定支持的区域设置
<locale-config>
<default-locale>en</default-locale>
<supported-locale>nl</supported-locale>
<supported-locale>de</supported-locale>
<supported-locale>es</supported-locale>
<supported-locale>fr</supported-locale>
</locale-config>
EN
nl
判定元件
锿
fr
需要通过
设置所需的区域设置。另请参见。Hello Balus C,我们可以使用multiple吗?如何从java bean调用它?使用时需要特别注意文件夹结构。如果您在faces-config.xml org.abc.def.messages msg中有以下内容,则所有message.properties、message_es.properties和message_de.properties应仅位于“src/main/resources/org/abc/def文件夹”中。i、 e.不要在“def”文件夹下创建“messages”文件夹。直到'def'是资源包希望在其中查找所有消息的位置\u xx.properties文件。
<resource-bundle>
<base-name>com.example.i18n.Text</base-name>
<var>text</var>
</resource-bundle>
<h:head>
<title>#{text['main.title']}</title>
</h:head>
<h:body>
<h1 id="head1">#{text['main.head1']}</h1>
<h:form id="form1">
<h:outputLabel for="input1" value="#{text['main.form1.input1.label']}" />
<h:inputText id="input1" label="#{text['main.form1.input1.label']}" />
</h:form>
</h:body>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>nl</supported-locale>
<supported-locale>de</supported-locale>
<supported-locale>es</supported-locale>
<supported-locale>fr</supported-locale>
</locale-config>