struts2二种检验方式
1.手动检验(编码方式校验)
1) Action一定要继承自ActionSupport
2) 针对某个要进行校验的请求处理方法编写一个 public void validateXxx()方法,在方法内部进行表单数据校验.
3) 也可针对所有的请求处理方法编写public void validate()方法。
4) 在校验方法中,可以通过addFieldError()方法来添加字段校验错误消息。
5) 当校验失败时,Struts框架会自动跳转到name为input的Result页面。在校验失败页面中,可以使用<s:fielderror/>来显示错误消息
6) 简单,灵活。但重用性不高。
package cn.itcast.action; import cn.itcast.domain.User; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; public class login1Action extends ActionSupport implements ModelDriven<User>{ private User user=new User(); @Override public User getModel() { return user; } @Override public String execute() throws Exception { System.out.println("execute method ......"); return null; } @Override public void validate() { // System.out.println("oooooooooooooooooooooo"); // System.out.println(user.getPassword()); if(user.getUsername()==null||user.getUsername().trim().length()==0){ //说明用户名为空 System.out.println("oo666666oooooooooooo"); this.addFieldError("username.message", "用户名不能为空"); } if(user.getPassword()==null||user.getPassword().trim().length()==0){ // System.out.println("orrrrrrrrrrrrrrr"); this.addFieldError("password.message", "密码不能为空"); } } }
这里表单封装
public User getModel() { return user; }然后执行函数检验
validate()
最后执行execute()函数......struts没有指定method默认执行execute()且默认返回SUCCESS常量
2. XML配置方式校验(在编码方式之前被执行)
1) 针对要校验的Action类,在同包下编写一个名为:Action类名-validation.xml校验规则文件。
2) 在校验规则文件中添加校验规则:具体的校验器名,参数可参看Struts2的reference或Struts2的API。
a) Field校验:针对Action类中每个非自定义类型的Field进行校验的规则。
<field name="要校验的Field名">
<field-validator type="校验规则器名" short-circuit="是否要短路径校验(默认是false)">
<param name="校验器要使用的参数名">值</param>
<message>校验失败时的提示消息</message>
</field-validator>
<!-- 还可添加其它的校验规则 -->
</field>
<field name="username"> <!-- 指定username不能为空--> <field-validator type="requiredstring"> <!-- 错误信息--> <message>用户名不能为空------------------</message> </field-validator> <field-validator type="stringlength"> <param name="maxLength">10</param> <param name="minLength">4</param> <message>用户名必须在${minLength}-${maxLength}之间</message> </field-validator> </field> <field name="age"> <field-validator type="int"> <param name="min">10</param> <param name="max">50</param> <message>年龄必须在${min}-${max}之间</message> </field-validator> </field> </validators>
表单提交校验
当表单校验成功user保存完整值,当表单检验失败不执行后续事情
public user1 getModel() { System.out.println(user); return user; }且只有当表单校验成功才执行struts2 里method对应的值得函数
public String login(){ System.out.println("login method>>>>>>>>>>>>>>>>>>>>"); return null; } public String regist1(){ System.out.println("regist1>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>"); return null; }
\