我正在使用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文件?
答案 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>
答案 2 :(得分:0)
是的,您可以从属性文件中获取本地化消息,并且不需要任何特定于语言环境的消息的validation.xml。
您需要指定ResourceBundle,它只是扩展名为.properties
的不同语言环境文件。答案 3 :(得分:0)
只需在ActionClass-validation.xml
中使用<message key="key_name"/>
即可
然后在
中定义key_name
global.properties
global_vn.properties
确保堆叠中有request_locale
。