`
杜崇明
  • 浏览: 6764 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

struts2 输入校验(转)

阅读更多

1、新建一个UserRegAction,为了方便编程,继承于ActionSupport

 

Java代码 复制代码 收藏代码
  1. publicclass UserRegAction extends ActionSupport{
  2. privatestaticfinallong serialVersionUID = -3132955950082594812L;
  3. private User user;//不用初始化
  4. public User getUser() {
  5. return user;
  6. }
  7. publicvoid setUser(User user) {
  8. this.user = user;
  9. }
  10. public String execute(){
  11. //这里其实返回的是一个小写的字符串"success"
  12. return Action.SUCCESS;
  13. }
  14. @Override
  15. publicvoid validate() {
  16. //执行完validate,一旦FieldError不为空,就会返回input视图给用户,不再执行业务逻辑方法
  17. if(null==user.getUsername()||"".equals(user.getUsername().trim())){
  18. this.addFieldError("user.username", "用户名不能不空!");
  19. }elseif(user.getUsername().length()<6||user.getUsername().length()>15){
  20. this.addFieldError("user.username", "用户名长度必需在6~15之间!!");
  21. }elseif(!user.getUsername().matches("[\\w]+")){
  22. this.addFieldError("user.username", "用户名只能是字母、数字或_符号!");
  23. }
  24. if(null==user.getPassword()||"".equals(user.getPassword().trim())){
  25. this.addFieldError("user.password", "密码不能不空!");
  26. }elseif(user.getPassword().length()<6||user.getPassword().length()>15){
  27. this.addFieldError("user.password", "密码长度必需在6~15之间!");
  28. }
  29. if(null==user.getRepassword()||"".equals(user.getRepassword().trim())){
  30. this.addFieldError("user.repassword", "重复密码不能不空!");
  31. }elseif(!user.getPassword().equals(user.getRepassword())){
  32. this.addFieldError("user.repassword", "输入密码不一致!");
  33. }
  34. if(null==user.getEmail()||"".equals(user.getEmail().trim())){
  35. this.addFieldError("user.email", "邮箱不能不空!");
  36. }elseif(!user.getEmail().matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+")){
  37. this.addFieldError("user.email", "邮箱格式有误!");
  38. }
  39. }
 public class UserRegAction extends ActionSupport{

	private static final long serialVersionUID = -3132955950082594812L;
	private User user;//不用初始化
	
	public User getUser() {
		return user;
	}
	public void setUser(User user) {
		this.user = user;
	}
	public String execute(){
		//这里其实返回的是一个小写的字符串"success"
		return  Action.SUCCESS;
	}
	@Override
	public void validate() { 
		//执行完validate,一旦FieldError不为空,就会返回input视图给用户,不再执行业务逻辑方法
		if(null==user.getUsername()||"".equals(user.getUsername().trim())){
			this.addFieldError("user.username", "用户名不能不空!");
		}else if(user.getUsername().length()<6||user.getUsername().length()>15){
			this.addFieldError("user.username", "用户名长度必需在6~15之间!!");
		}else if(!user.getUsername().matches("[\\w]+")){
			this.addFieldError("user.username", "用户名只能是字母、数字或_符号!");
		}
		if(null==user.getPassword()||"".equals(user.getPassword().trim())){
			this.addFieldError("user.password", "密码不能不空!");
		}else if(user.getPassword().length()<6||user.getPassword().length()>15){
			this.addFieldError("user.password", "密码长度必需在6~15之间!");
		}
		if(null==user.getRepassword()||"".equals(user.getRepassword().trim())){
			this.addFieldError("user.repassword", "重复密码不能不空!");
		}else if(!user.getPassword().equals(user.getRepassword())){
			this.addFieldError("user.repassword", "输入密码不一致!");
		}
		if(null==user.getEmail()||"".equals(user.getEmail().trim())){
			this.addFieldError("user.email", "邮箱不能不空!");
		}else if(!user.getEmail().matches("[\\w[.-]]+@[\\w[.-]]+\\.[\\w]+")){
			this.addFieldError("user.email", "邮箱格式有误!");
		}
	}
}

知识提示:addFieldError方法属于ActionSupport类,其实里面是使用Map把错误信息以键值的方式存储。当执行完 validate方法后,接着会调用ActionSupport的hasErrors()方法,一旦存在错误信息,就返回input视图给用户,不再执行execute方法.最后在页面显示出这些信息给用户.

 

2、在struts.xml里配置

Xml代码 复制代码 收藏代码
  1. <!-- 测试数据校验 -->
  2. <packagename="testvalidate"namespace="/test3"extends="struts-default">
  3. <!-- 用户注册界面 -->
  4. <actionname="registerUI">
  5. <result>/WEB-INF/jsp/register.jsp</result>
  6. </action>
  7. <!-- 用户注册 -->
  8. <actionname="register"class="cn.gkit.action.UserRegAction">
  9. <resultname="input">/WEB-INF/jsp/register.jsp</result>
  10. <resultname="success">/WEB-INF/jsp/welcome.jsp</result>
  11. </action>
  12. </package>
 <!-- 测试数据校验 -->
    <package name="testvalidate" namespace="/test3" extends="struts-default">
    	<!-- 用户注册界面 -->
    	<action name="registerUI">
    		<result>/WEB-INF/jsp/register.jsp</result>
    	</action>
    	<!-- 用户注册 -->
    	<action name="register" class="cn.gkit.action.UserRegAction">
    		<result name="input">/WEB-INF/jsp/register.jsp</result>
    		<result name="success">/WEB-INF/jsp/welcome.jsp</result>
    	</action>
    </package>

3、新建register.jsp页面,为了简洁,这里不对页面进行布局.

Html代码 复制代码 收藏代码
  1. <s:formaction="register"namespace="/test3">
  2. 用户名:<s:textfieldname="user.username"/>
  3. <s:fielderrorcssStyle="color:red;">
  4. <s:param>user.username</s:param>
  5. </s:fielderror><br/>
  6. 密码:<s:passwordname="user.password"/>
  7. <s:fielderrorcssStyle="color:red;">
  8. <s:param>user.password</s:param>
  9. </s:fielderror><br/>
  10. 重复密码:<s:passwordname="user.repassword"/>
  11. <s:fielderrorcssStyle="color:red;">
  12. <s:param>user.repassword</s:param>
  13. </s:fielderror><br/>
  14. 电子邮箱:<s:textfieldname="user.email"/>
  15. <s:fielderrorcssStyle="color:red;">
  16. <s:param>user.email</s:param>
  17. </s:fielderror><br/>
  18. <s:submitvalue="提交"/>
  19. </s:form>
 <s:form action="register" namespace="/test3"> 
  		    用户名:<s:textfield name="user.username" />
  	     <s:fielderror cssStyle="color:red;" >
  		<s:param>user.username</s:param>
  	     </s:fielderror><br/>
  		      密码:<s:password name="user.password"/>
  	     <s:fielderror cssStyle="color:red;">
  		 <s:param>user.password</s:param>
  	     </s:fielderror><br/>
 	         重复密码:<s:password name="user.repassword"/>
  	     <s:fielderror cssStyle="color:red;" >
  	      	<s:param>user.repassword</s:param>
  	     </s:fielderror><br/>
                  电子邮箱:<s:textfield name="user.email"/>
            <s:fielderror cssStyle="color:red;" >
                <s:param>user.email</s:param>
            </s:fielderror><br/>
            <s:submit value="提交"/>
    </s:form>

知识提示:<s:fielderror />是从fielderror里面取出错误信息,<s:param />是取出指定key的错误消息.

 

4、validate方法会对action里面的所有业务方法进行校验,但如何只对指定的方法进行校验呢?

如增加一个reg方法:

 

Java代码 复制代码 收藏代码
  1. public String reg(){
  2. return Action.SUCCESS;
  3. }
public String reg(){
       return   Action.SUCCESS;
}

写一个只对reg业务方法进行校验的方法:

 

Java代码 复制代码 收藏代码
  1. publicvoid validateReg(){
  2. //写验证代码,类似之前写的validate方法
  3. }
public void validateReg(){
//写验证代码,类似之前写的validate方法
}

知识提示:如果一个action里面有多个业务方法,指定要校验的方法名的定义规则:validate+业务方法名(首字母要大写).

执行流程: 封装表单数据后-->先调用validateReg方法-->再调用validate方法. validate方法最终还是会被调用的。所以当action里面有多个业务方法时,我们不会去重写validate方法,而是对应每一个业务方法都写一个验证方法. 如果要写一个只对execute方法校验的方法,一样方法名可以写成validateExecute方法.

本文来自:http://yulon.iteye.com/blog/567203

分享到:
评论

相关推荐

    Struts2输入校验总结

    Struts2输入校验总结 Struts2输入校验

    struts2输入校验

    struts2输入校验 对指定方法进行输入校验

    struts2的输入校验

    struts2的输入校验有两种方式: 一.重写validate()方式 二.采用配置文件的方式 先我们就以一个简单的登录的例子来讲解这个吧. 重点讲解下,第二个采用配置文件的方式: 1.添加一个xml的校验文件,保存在...

    struts2输入校验总结

    struts2输入校验总结,struts2自带的校验器,以及校验器不能做的check的处理的总结

    Struts2 输入校验

    本人写的struts2 输入校验的小程序,希望大家踊跃下载。 本人写的struts2 输入校验的小程序,希望大家踊跃下载。 本人写的struts2 输入校验的小程序,希望大家踊跃下载。

    Struts 2 输入校验

    Struts 2 输入校验

    Struts2的输入校验

    Struts2输入校验,Struts2提供了功能强大的输入校验机制,通过Struts2内建的输入校验器,应用无需书写任何代码,即可完成大部分的校验功能,并可以同时完成客户端和服务器端的校验。

    Struts2类型转换与输入校验 .zip

     实验目的:  熟悉和掌握Struts2自定义类型转换。  熟悉和掌握Struts2内建校验的操作方法 ...(2) 根据实验四的图书管理系统,扩展图书新增功能,要求对新增页面表单中的每个文件输入框进行输入校验

    使用struts2进行输入校验

    使用struts2进行输入校验入门 (附图)

    struts2输入校验深入总结

    NULL 博文链接:https://fangguanhong.iteye.com/blog/1779291

    Struts2数据校验与国际化

    Struts2数据校验与国际化,有validate()方法校验,有validateXxx()方法校验,有配置文件校验;国际化:有英,香港,内地

    Struts2输入校验

    要求使用Struts2的内建校验器校验“书名”、“作者”、“出版日期”、“价格”和“库存数量”字段;要求手动编写代码校验“书号”的有效性;要求手动编写代码校验“出版社”字段中是否包含了“出版社”三个字。

    Struts2 用户输入校验教程

    基于Struts2框架的用户输入校验的完整讲解!是我的原创! 非常感谢大家提出宝贵意见

    使用Struts2校验框架完成输入校验

    2、用户名只能使用数字或者字母,长度为6~20之间; 3、密码、确认密码必须是数字和字母,长度为6~20之间; 4、密码、确认密码必须相同; 5、收入必须在0.001~10000.000之间; 6、年龄必须是整数且必须在0~120...

    struts2中的输入校验

    重写validate方法校验将会产生两种错误信息:Field级别错误信息,Action级别的错误信息 Field级别错误信息就是将错误信息添加到fieldErrors,也就是将错误信息添加到addFieldError方法中。 Action级别的错误信息...

    java,struts2,输入校验

    java,struts2的输入校验总结大全

Global site tag (gtag.js) - Google Analytics