Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JSF中的国际化,何时使用消息包和资源包?_Jsf_Localization_Internationalization - Fatal编程技术网

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>