struts2学习笔记(7)---数据验证之validateXxx()方法
2017-06-15 13:56
344 查看
validateXxx()方法
上一篇文章写了使用Action的validate()方法,validate()仅仅能对action的所有方法进行验证。而要实现对action中特定的方法进行验证,就须要使用validateXxx()方法。validateXxx()仅仅会校验action中方法名为xxx的方法。当中Xxx的第一个字母要大写。
源码
UserAction.javapackage 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:数据校验,通过Action中的validate()方法实现校验(续:多业务方法时的不同验证处理)
- 验证数据的方法validate
- Struts2教程4:使用validate方法验证数据
- Struts2教程4:使用validate方法验证数据
- Struts2:使用validate方法验证数据 《真的有外星人吗?》
- Struts2使用validate方法验证数据
- Struts2教程4:使用validate方法验证数据
- Struts2教程4:使用validate方法验证数据
- STRUTS2.X之使用validate方法验证数据
- Struts2教程4:使用validate方法验证数据
- 使用validate方法验证数据
- Struts2教程4:使用validate方法验证数据
- Struts2:使用validate方法验证数据
- Struts2教程4:使用validate方法验证数据
- validate方法验证数据
- Struts2教程4:使用validate方法验证数据
- 表单数据验证方法(一)—— 使用validate.js实现表单数据验证
- Struts2教程4:使用validate方法验证数据