struts2从零开始(五)

     知识点: struts2中的输入校验
              1、action继承ActionSupport 复写validate方法,但是这样子在页面上调用action中的任何一个方法都会调用该validate方法,所以不推荐
              2、同样是action继承ActionSupport 但是不复写validate方法,直接写一个页面上所要调用的方法的校验方法  validateXxx方法。
              3、资源文件配置方式实现校验


               1、1action中的代码如下:
                      
 @Override
    public void validate() {
    	if(users.getUname()==null||users.getUname().length()<3||users.getUname().length()>15){
    		this.addFieldError("users.uname", "密码长度必须在3-15");	
    	}
    	super.validate();
    }

   
            1.2自定义校验方法的代码如下:
             
 public void validateExecute() {
    	if(users.getUname()==null||users.getUname().length()<3||users.getUname().length()>15){
    		this.addFieldError("users.uname", "密码长度必须在3-15");	
    	}
	   
      }
    

         
        1.3、局部资源文件(利用配置资源文件完成校验)
              1.3.1、在web下面新建一个RegisterAction-validation.xml文件,这里用来配置需要校验的字段信息(代码如下)
      
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC 
  		"-//OpenSymphony Group//XWork Validator 1.0.2//EN" 
  		"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
  <validators>
  	<field name="users.uname">
  		<field-validator type="requiredstring" short-circuit="true">
  			<param name="trim">true</param>
  			<message>用户名不能为空</message>
  		</field-validator>
  		<field-validator type="stringlength">
  			<param name="minLength">3</param>
  			<param name="maxLength">15</param>
  			<message>用户名必须在${minLength}-${maxLength}之间</message>
  		</field-validator>
  	</field>
  	
  	<field name="users.upass">
  		<field-validator type="requiredstring" short-circuit="true">
  			<param name="trim">true</param>
  			<message>密码不能为空</message>
  		</field-validator>
  		<field-validator type="stringlength">
  			<param name="minLength">6</param>
  			<param name="maxLength">15</param>
  			<message>密码必须在${minLength}-${maxLength}之间</message>
  		</field-validator>
  	</field>
  	
  	<field name="users.reupass">
  		<field-validator type="fieldexpression">
  			<param name="expression">users.upass==users.reupass</param>
  			<message>两次密码不一致</message>
  		</field-validator>
  	</field>
  	
  	<field name="users.age">
  		<field-validator type="required" short-circuit="true">
  			<message>年龄不能为空</message>
  		</field-validator>
  		<field-validator type="int">
  			<param name="min">1</param>
  			<param name="max">150</param>
  			<message>年龄应该在${min}-${max}之间</message>
  		</field-validator>
  	</field>
  	
  	<field name="users.birthday">
  		<field-validator type="required" short-circuit="true">
  			<message>生日不能为空</message>
  		</field-validator>
  		<field-validator type="date">
  			<param name="min">1900-01-01</param>
  			<param name="max">2050-01-01</param>
  			<message>生日应该在${min}-${max}之间</message>
  		</field-validator>
  	</field>
  	
  	<field name="users.graduation">
  		<field-validator type="required" short-circuit="true">
  			<message>毕业时间不能为空</message>
  		</field-validator>
  		<field-validator type="fieldexpression">
  			<param name="expression">users.birthday&lt;users.graduation</param>
  			<message>毕业时间应该大于生日</message>
  		</field-validator>
  	</field>
  	
  	<field name="users.email">
  		<field-validator type="requiredstring" short-circuit="true">
  			<param name="trim">true</param>
  			<message>邮箱必填</message>
  		</field-validator>
  		<field-validator type="email">
  			<message key="invalid.email"></message>
  		</field-validator>
  	</field>
  </validators>


     1.3.2、目录结构(比较重要的是局部资源文件的命名模式)
     

     
     1.3.3、局部资源文件中的类容
     




    值得注意的是:1、struts2的配置文件相当多,所以它的命名规则需要遵守,最好的学习方式就是模仿。
                  2、利用框架实现输入校验能完成一些js校验所不能完成的事情,但是也不能滥用,否则会增加服务器的压力。合理的做法是前台验证和后台验证相结合。
        
           源码下载请点这里:
            

猜你喜欢

转载自1136051009.iteye.com/blog/1769700