【问题标题】:Struts2 i18n messagesStruts2 i18n 消息
【发布时间】:2013-03-07 21:13:20
【问题描述】:

我正在使用 Struts 2,并按照我找到的教程创建了一个简单的应用程序。

我创建了一个<MyActionClass>-validation.xml 文件,我想知道如何显示基于多种语言的验证消息?

<field name="password">
    <field-validator type="requiredstring">
        <param name="trim">true</param>
        <message>You have to enter a password.</message> 
    </field-validator>
</field>

我可以从本地化的.properties 文件中获取消息还是必须使用其他类型的验证?

每个语言环境都应该有验证 XML 文件吗?

【问题讨论】:

标签: java validation properties struts2 internationalization


【解决方案1】:

使用getText 方法从属性文件中获取消息。

<message>${getText("enter.password")}</message>

请参阅:http://struts.apache.org/development/2.x/docs/validation.html#Validation-LocalizingandParameterizingMessages

【讨论】:

    【解决方案2】:

    key 从您的本地化属性中检索消息。您不必为验证编写重复的代码。例如

    <validators>
       <validator type="requiredstring">
         <param name="fieldname">field.name</param>
         <message key="field.key"/>
       </validator>
    </validators>
    

    或使用注释

    private String name;
    
    @RequiredStringValidator(key = "field.key")
    public void setName(String name) {
      this.name = name;
    }
    

    field.name 是字段标签的资源键,而field.key 是错误消息的键。

    在你写的属性中

    field.name=MyName 
    field.key=MyName required
    

    这是本地化的。

    根据用户浏览器的区域设置或通过request_locale 参数自动检索消息,该参数由I18N interceptor 设置区域设置,与浏览器设置无关。因此,请确保将其放在堆栈中。

    【讨论】:

      【解决方案3】:

      是的,您可以从属性文件中获取本地化消息,并且对于任何特定于语言环境的消息都不需要任何 validation.xml。

      您需要指定 ResourceBundle,它只是扩展名为 .properties 的不同语言环境文件

      【讨论】:

        【解决方案4】:

        只需在您的ActionClass-validation.xml 中使用&lt;message key="key_name"/&gt;

        然后你在

        中定义key_name
        global.properties
        global_vn.properties
        

        确保您的堆栈中有request_locale

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-11
          • 2016-04-08
          • 1970-01-01
          • 1970-01-01
          • 2017-10-26
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多