在上面的数据校验中,所有的提示信息都是通过硬编码的方式写在配置文件中的,这种方式显然不利于程序国际化。
当查看每个校验文件时,发现每个元素都包含了一个必填的子元素,这个子元素中的内容就是校验失败后的提示信息。为了国际化该提示信息,为message元素指定key属性,该key属性指定是国际化提示信息对应的key。
例如,我们将前面的birth字段的校验规则改为如下配置。
程序清单:codes\04\4.2\I18NValidate\WEB-INF\src\org\crazyit\app\action\RegistAction-validation.xml
/p>
"-//OpenSymphony Group//XWork Validator 1.0.3//EN"
"http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">
true
true
1
150
1900-01-01
2050-02-21
上面的粗体字代码并未直接给出message的内容,而是指定了一个key属性,表明当birth字段违反该校验规则时,对应的提示信息是key为birth.range的国际化消息。
本应用的校验文件中指定了许多国际化信息的key,所以必须在国际化资源文件中增加对应的key,即在国际化资源文件中增加如下Entry。
程序清单:codes\04\4.2\I18NValidate\WEB-INF\src\mess.properties
#违反用户名必须输入的提示信息
name.requried=您必须输入用户名!
#违反用户名必须匹配正则表达式的提示信息
name.regex=您输入的用户名只能是字母和数字,且长度必须在4到25之间!
#违反密码必须输入的提示信息
pass.requried=您必须输入密码!
#违反密码必须匹配正则表达式的提示信息
pass.regex=您输入的密码只能是字母和数字,且长度必须在4到25之间!
#违反年龄必须在指定范围的提示信息
age.range=您的年龄必须在${min}和${max}之间!
#违反生日必须在指定范围的提示信息
birth.range=您的生日必须在${min}和${max}之间!
运行上面的程序,即可看到输入校验的提示信息变为国际化资源文件提供的消息,这就实现了错误提示消息的国际化。