国际化提示信息

在上面的数据校验中,所有的提示信息都是通过硬编码的方式写在配置文件中的,这种方式显然不利于程序国际化。

当查看每个校验文件时,发现每个<field-validator .../>元素都包含了一个必填的<message .../>子元素,这个子元素中的内容就是校验失败后的提示信息。为了国际化该提示信息,为message元素指定key属性,该key属性指定是国际化提示信息对应的key

例如,我们将前面的birth字段的校验规则改为如下配置。

程序清单:codes\04\4.2\I18NValidate\WEB-INF\src\org\crazyit\app\action\RegistAction-validation.xml

<?xml version="1.0" encoding="GBK"?>

<!-- 指定校验配置文件的DTD信息 -->

<!DOCTYPE validators PUBLIC

     "-//OpenSymphony Group//XWork Validator 1.0.3//EN"

     "http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd">

<!-- 校验文件的根元素 -->

<validators>

     <!-- 校验Actionname属性 -->

     <field name="name">

          <!-- 指定name属性必须满足必填规则 -->

          <field-validator type="requiredstring">

               <param name="trim">true</param>

               <message key="name.requried"/>

          </field-validator>

          <!-- 指定name属性必须匹配正则表达式 -->

          <field-validator type="regex">

               <param name="expression"><![CDATA[(\w{4,25})]]></param>

               <message key="name.regex"/>

          </field-validator>

     </field>

     <!-- 校验Actionpass属性 -->

     <field name="pass">

          <!-- 指定pass属性必须满足必填规则 -->

          <field-validator type="requiredstring">

               <param name="trim">true</param>

               <message key="pass.requried"/>

          </field-validator>

          <!-- 指定pass属性必须满足匹配指定的正则表达式 -->

          <field-validator type="regex">

               <param name="expression"><![CDATA[(\w{4,25})]]></param>

               <message key="pass.regex"/>

          </field-validator>

     </field>

     <!-- 指定age属性必须在指定范围内-->

     <field name="age">

          <field-validator type="int">

               <param name="min">1</param>

               <param name="max">150</param>

               <message key="age.range"/>

          </field-validator>

     </field>

     <!-- 指定birth属性必须在指定范围内-->

     <field name="birth">

          <field-validator type="date">

               <!-- 下面指定日期字符串时,必须使用本Locale的日期格式 -->

               <param name="min">1900-01-01</param>

               <param name="max">2050-02-21</param>

               <message key="birth.range"/>

          </field-validator>

     </field>

</validators>

上面的粗体字代码并未直接给出message的内容,而是指定了一个key属性,表明当birth字段违反该校验规则时,对应的提示信息是keybirth.range的国际化消息。

本应用的校验文件中指定了许多国际化信息的key,所以必须在国际化资源文件中增加对应的key,即在国际化资源文件中增加如下Entry

程序清单:codes\04\4.2\I18NValidate\WEB-INF\src\mess.properties

#违反用户名必须输入的提示信息

name.requried=您必须输入用户名!

#违反用户名必须匹配正则表达式的提示信息

name.regex=您输入的用户名只能是字母和数字,且长度必须在425之间!

#违反密码必须输入的提示信息

pass.requried=您必须输入密码!

#违反密码必须匹配正则表达式的提示信息

pass.regex=您输入的密码只能是字母和数字,且长度必须在425之间!

#违反年龄必须在指定范围的提示信息

age.range=您的年龄必须在${min}${max}之间!

#违反生日必须在指定范围的提示信息

birth.range=您的生日必须在${min}${max}之间!

运行上面的程序,即可看到输入校验的提示信息变为国际化资源文件提供的消息,这就实现了错误提示消息的国际化。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值