Struts2 i18n消息

时间:2013-03-19 09:13:08

标签: java validation properties struts2 internationalization

我正在使用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文件?

4 个答案:

答案 0 :(得分: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

是本地化的。

根据用户浏览器的区域设置或通过I18N interceptor设置区域设置的request_locale参数自动检索消息,与浏览器设置无关。所以,确保你把它放在堆栈上。

答案 1 :(得分:0)

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

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

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

答案 2 :(得分:0)

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

您需要指定ResourceBundle,它只是扩展名为.properties

的不同语言环境文件。

答案 3 :(得分:0)

只需在ActionClass-validation.xml

中使用<message key="key_name"/>即可

然后在

中定义key_name
global.properties
global_vn.properties

确保堆叠中有request_locale