struts2学习笔记(7)---数据验证之validateXxx()方法
来源:互联网 发布:sql语句distinct缺点 编辑:程序博客网 时间:2024/05/20 14:18
validateXxx()方法
上一篇文章写了使用Action的validate()方法,validate()只能对action的所有方法进行验证,而要实现对action中特定的方法进行验证,就需要使用validateXxx()方法。validateXxx()只会校验action中方法名为xxx的方法。其中Xxx的第一个字母要大写。
源代码
UserAction.java
package org.dny.action;import org.dny.model.User;import com.opensymphony.xwork2.ActionSupport;import com.opensymphony.xwork2.ModelDriven;public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user; @Override public User getModel() { if(this.user == null) this.user = new User(); return this.user; } public String login() { //登录 System.out.println("UserAction login"); System.out.println("userName:"+user.getUserName()); System.out.println("paswword:"+user.getPassword()); return "loginSuccess"; } public void validateLogin() { System.out.println("UserAction validateLogin"); if(user.getUserName() == null || user.getUserName().trim().equals("")) this.addFieldError("loginUserName", "帐号不能为空"); //给loginUserName属性添加错误消息“帐号不能为空” if(user.getPassword() == null || user.getPassword().trim().equals("")) this.addFieldError("loginPassword", "密码不能为空"); } public String register() { //注册 System.out.println("UserAction register"); System.out.println("userName:"+user.getUserName()); System.out.println("paswword:"+user.getPassword()); return "registerSuccess"; } public void validateRegister() { System.out.println("UserAction validateRegister"); if(user.getUserName() == null || user.getUserName().trim().equals("")) this.addFieldError("registerUserName", "帐号不能为空"); //给registerUserName属性添加错误消息“帐号不能为空” if(user.getPassword() == null || user.getPassword().trim().equals("")) this.addFieldError("registerPassword", "密码不能为空"); } @Override public void validate() { System.out.println("UserAction validate"); }}
这里的UserAction中有login()和register()两个方法,以及与二者对应的validateLogin()和validateRegister()验证方法。
struts.xml配置
<action name="user_*" class="org.dny.action.UserAction" method="{1}"> <result name="loginSuccess">/success.jsp</result> <result name="registerSuccess">/success.jsp</result> <result name="input">/index.jsp</result></action>
登陆成功或者注册成功都会跳转到success.jsp页面,而验证失败时会跳转到index.jsp页面。
index.jsp页面
<center> 登录<br> <!-- 登录 --> <form action="user_login" method="post"> <table> <tr> <td>帐号:</td> <td><input type="text" name="userName"></td> <td> <!-- 通过EL表达式取出 fieldErrors中loginUserName的值 --> ${fieldErrors['loginUserName'][0]} </td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"></td> <td> <!-- 通过EL表达式取出 fieldErrors中loginPassword的值 --> ${fieldErrors['loginPassword'][0]} </td> </tr> <tr> <td></td> <td align="left"><input type="submit" value="登录"> <input type="reset" value="重置"> </tr> </table> </form> </center> <hr> <center> 错误信息<br> <!-- 通过EL表达式取出 fieldErrors中全部的错误消息 --> 通过EL表达式取出 fieldErrors中全部的错误消息:<br> ${fieldErrors}<br> <br> <!-- 通过struts标签取出fielderror中全部的错误消息 --> 通过struts标签取出fielderror中全部的错误消息: <s:fielderror /> </center> <hr> <center> 注册<br> <!-- 注册 --> <form action="user_register" method="post"> <table> <tr> <td>帐号:</td> <td><input type="text" name="userName"></td> <td> <!-- 通过EL表达式取出 fieldErrors中registerUserName的值 --> ${fieldErrors['registerUserName'][0]} </td> </tr> <tr> <td>密码:</td> <td><input type="password" name="password"></td> <td> <!-- 通过EL表达式取出 fieldErrors中registerPassword的值 --> ${fieldErrors['registerPassword'][0]} </td> </tr> <tr> <td></td> <td align="left"><input type="submit" value="注册"> <input type="reset" value="重置"> </tr> </table> </form> </center> <hr> <center> <s:debug /> </center>
运行结果及截图
验证流程
1、类型转换器对请求参数执行类型转换,并把转换后的值赋给action中的属性。
2、如果在执行类型转换的过程中出现异常,系统会将异常信息保存到ActionContext,conversionError拦截器将异常信息添加到fieldErrors里。不管类型转换是否出现异常,都会进入第3步。
3、系统通过反射技术先调用action中的validateXxx()方法,Xxx为方法名。
4、再调用action中的validate()方法。
5、经过上面4步,如果系统中的fieldErrors存在错误信息(即存放错误信息的集合的size大于0),系统自动将请求转发至名称为input的视图。如果系统中的fieldErrors没有任何错误信息,系统将执行action中的处理方法。
参考链接:
http://blog.csdn.net/houpengfei111/article/details/9038233
- struts2学习笔记(7)---数据验证之validateXxx()方法
- struts2学习笔记(6)---数据验证之validate()方法
- Struts2的validateXxx( )方法
- Struts2学习笔记二(数据验证)
- Struts2校验方法validate以及validateXxx方法
- 数据验证Struts2框架类验证,方法验证等学习笔记
- Struts2学习笔记(四)在Struts2中最简单的验证数据的方法是使用validate
- struts2中手动完成输入校验(2)重写validateXXX()方法
- Struts2的输入校验(3):重写validateXxx方法(方法二)
- 5 Struts2输入校验(一)----validate方法-validateXxx方法
- Struts2 学习之三 (struts数据验证)
- Struts2 学习之三 数据验证
- 黑马程序员---struts2学习笔记之七(表单验证)
- J2EE系列之Struts2学习笔记(十九)--Struts2验证框架(内置验证)
- J2EE系列之Struts2学习笔记(二十)--Struts2验证框架(自定义验证)
- Struts2重写validateXXX方法校验多个处理逻辑
- Struts2学习笔记(12)-----Struts2之动态方法调用
- struts2之数据验证
- 未完的歌
- EASY_SIZE使用
- Redis各种数据结构内存占用测试
- jquery checkbox 显示checked undefined
- 虚拟机和宿主机实现共享文件夹,粘贴板和双向拖放
- struts2学习笔记(7)---数据验证之validateXxx()方法
- 通过浏览器链接启动本地activity
- SpringMVC实战(三种映射处理器)
- Java StuNote 1
- HDU 1312 Red and Black
- android判断一个功能是否可用
- 小城大事
- Java入门常见问题
- Quick小白书系列(三)MyApp详解