首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > XML SOAP >

struts2 xml 校验 初记2

2013-08-01 
struts2 xml 校验 小记2? ? ? ? 相信很多的人都用过struts2的配置文件验证,说实话,这个服务端校验确实比较

struts2 xml 校验 小记2

? ? ? ? 相信很多的人都用过struts2的配置文件验证,说实话,这个服务端校验确实比较好,可以有效防止一些错误数据提交到数据库。这里要说的是当类型转换失败时,struts默认的提示信息就不那么友好了,所以我们需要重新为它添加国际化资源,即:

invalid.fieldvalue.model.serverId=设备ID必须为数值类型

前面这一串“invalid.fieldvalue”是固定的,后面的就是你的xml中指定的校验字段名称,我的校验xml是:

<field name="model.serverId">      <field-validator type="required" short-circuit="true">          <param name="trim">true</param> -->         <message key="messages.validate.server.serverId.requied"></message>      </field-validator>      <field-validator type="int" short-circuit="true">          <param name="min">1</param> -->         <param name="max">9999999</param> -->         <message key="messages.validate.server.serverId.range"></message> -->     </field-validator> --></field> 

?加上以上友好的国家化资源信息后,当转型失败后,后台返回的错误信息就是 "设备ID必须为数值类型," 加上 “messages.validate.server.serverId.requied” 对应的国家化资源信息了;嗯???

等等,什么情况?信息提示是没有问题了,但是进入了第一个验证了,是不能为空的验证。查看strut-default.xml发现struts框架本身的机制就是,先转型,转型失败后加载错误信息,然后继续验证。

这里问题就来了,我不想转型失败后还傻不拉几的去验证,有没有可能转型失败后不去验证呢?不可以,这是struts的机制决定的。

所以我想到了在xml中接收转型失败后的错误信息,并给出相应的例子提示信息,即:

<field name="model.serverId">  <field-validator type="conversion" short-circuit="true">  <message key="messages.numerical.examples"></message> </field-validator>       <field-validator type="required" short-circuit="true">           <param name="trim">true</param>             <message key="messages.validate.server.serverId.requied"></message>       </field-validator> -->        <field-validator type="int" short-circuit="true">            <param name="min">1</param>            <param name="max">9999999</param>           <message key="messages.validate.server.serverId.range"></message>       </field-validator></field> -->

?国家化资源信息中加入:

messages.numerical.examples=如:0,11,202

热点排行