实际上在验证框架里面还可以做很多事情,例如:验证数字的范围是否正确,长度是否合适,以及发布日期是否满足,正则操作是否可用等等.
范例:编写NewsAction-validation.xml文件,完善验证
<validators>
<field name="news.nid">
<field-validator type="int">
<param name="min">10</param>
<param name="max">20</param>
<message>[验证框架]新闻编号只能够输入${min}-${max}之间!</message>
</field-validator>
<field-validator type="requiredstring">
<message>[验证框架]新闻编号不允许为空</message>
</field-validator>
</field>
<field name="news.content">
<field-validator type="requiredstring">
<message>[验证框架]新闻内容不允许为空!!!!</message>
</field-validator>
</field>
<field name="news.title">
<field-validator type="requiredstring">
<message>新闻标题不允许为空</message>
</field-validator>
<field-validator type="stringlength">
<param name="minlength" >6</param>
<param name="maxlength" >15</param>
<message>新闻标题输入错误,其长度应该在${minlength}-${maxlength}</message>
</field-validator>
<field-validator type="regex">
<param name="trim">true</param><!-- 去掉首尾空格 -->
<param name="expression"><![CDATA[\w+\.\w+\.\w+]]></param>
<message>请输入正确的网址内容</message>
</field-validator>
</field>
</validators>
即便现在可以进行验证了,那么问题依然存在,它只是横向替代validate().但是如果数据类型输入有问题,那么依然会在后台出现错误,并且此时会显示的错误信息是:"Invalid field value for field "参数名称".",这样的信息是可以修改的,只需要修改Messages.properties文件即可.
范例:修改Messages.peoperties文件,增加错误显示
invalid.fieldvalue.news.nid=\u65B0\u95FB\u7F16\u53F7\u5FC5\u987B\u662F\u6570\u5B57!
名称必须按照指定标准来写,
以上信息实际上是数据类型转换的错误信息,这样的错误信息是在出错后自动使用的,也想fieldErrors中保存.
总结
不管是验证方法还是验证框架,最为核心的概念:
●所有的错误信息都使用fieldErrors()方法返回,使用addFieldError()添加错误
●所有的验证框架都有一个最本质的问题--数据赋值之后执行.
正因为验证框架的执行顺序有问题,所以在时间的开发之中,它只能作为二号验证器使用,或者就不使用..