基于XML配置方式实现对action的所有方法进行校验
基于XML配置方式实现
对action的所有方法进行校验或者对Action的指定方法进行校验
Action也要继承ActionSupport,并且提供校验文件,校验文件和action类放在同一个包下
文件的取名格式为:ActionClassName-validation.xml,其中ActionClassName为action的简单类名,-validation为固定
写法.如果Action类为cn.itcast.UasrAction那么该文件的取名格式为UserAction-validation.xml
配置文件的模板从struts-2.1.6文件下的apps下解压个例子在WEB-INF下的classes下example下Login-validation.xml
<validators>
<field name="username"> ----属性
<field-validator type="requiredstring"> 这个校验器有系统提供 可在xwork-2.x.jar中的com.opensymphony.xwork2.validator.validators
下的default.xml找到
<param name="trim">true</param>作用去掉字符串的前后空格
<message>用户不能为空</message>校验失败后的提示信息
</field-validator>
</field>
<field name="mobile">
<field-validator type="requiredstring">
<message>手机号不能为空</message>
</field-validator>
<field-validator type="regex">
<param name=" expression"><![CDATA[^1[358]\d{9}$]]</param>
<message>手机格式不正确</message>
</field-validator>
</field>
</validators>
同样也要提供input视图
<s:fielderror/>以及校验失败显示错误信息的标签
总结:
第一步在Action的同一个包下放入校验文件
第二步在配置文件中编写对那些字段进行校验 使用对应的校验器
在struts.xml配置文件中提供一个名为input视图如:<result name="input">/index.jsp</result>
通过<s:fielderror/>把校验失败信息打印在页面上
-=================
编写校验文件时,不能出现帮助信息如何解决?
在编写ActionClassName-validation.xml校验文件时,如果出现不了帮助信息,可以按下面方式解决
windows-> perferences--> myeclipse -->files and editors-> xml--> xmlcatalog 点add在出现的窗口中的location中选"File system"然后再xwork-2.1.2解压
目录的src\java目录中选择xwork-validator-1.0.3.dtd回到设置窗口的时候,不要急着关闭窗口,应把窗口中的Key Type改为URL
Key改为http://www.opensymphony.com/xwork/xwork-validator-1.0.3.dtd
===================================================================================================
如何基于XML对Action中指定的方法进行校验
当校验文件取名为ActionClassName-validation.xml会对action中的所以处理方法实施输入验证
如果你只需要对action中的某个action方法实施校验,那么校验文件的取名应该为:ActionClassName-ActionName-validation.xml
其中ActionName为struts.xml中action的名称.例如:在实际应用中,常有以下设置:
<package name="" namespace="/person" >
<action name="user_*" class="cn.itcast.action.UserAction" method="{1}" > 通配符来决定执行的方法
<result name="success">/WEB-INF/page/message.jsp</result>
<result name="input">/WEB-INF/page/addUser.jsp</result>
</action>
</package>
UserAction中有以下两个处理方法:
public String add() throws Exception{
}
public String update() throws Exception{
}
那么执行的路径:/person/user_add.action
/person/user_update.action
namespace= /person
ActionName=user_add
而我们的校验文件的名称
UserAction[ActionClass的名称]-user_add[ActionName]-validation.xml
========================总结
基于XML校验的一些特点
当为某个action提供了ActionClassName-Validation.xml和ActionClassName-ActionName-Validation.xml
系统寻找到第一个校验文件时还会继续搜索后面的校验文件,当搜索到所有校验文件时,会把校验文件里的所有
校验规则汇总,然后全部应用于action方法的校验,如两个校验文件指定的校验规则冲突,则只使用后面文件的校验规则
当action继承了另一个action,父类action的校验文件会先被搜索到。