008 - 输入校验

1. 输入校验

 

    流程:用户提交表单 -> 进行类型转换(有错,转到input视图) 

                                -> 输入校验validateXxxx()(有错,转到input视图) 

                                -> validate()(有错,转到input视图)                    
                         
      
                      

如果fliedErrors里存有信息,则Action转到input视图. 在转向的input视图中,可以用 <s:fielderror/> 拿到错误信息,但是默认带了<ul><li> XXXX </ul></li>,于是常用<s:properties>直接拿出值,再自己做修饰

 


1)手工在Action里写validate()或validateXxxx()方式


   在执行execute()方法前,首先执行输入校验
           * validate()对所有方法进行校验
           * validateXxxxx() 对 xxxxx()这个方法进行校验
  
如: 
    public void validate() {//会对action中的所有方法校验
            if(this.username==null || "".equals(this.username.trim())){
                    this.addFieldError("username", "用户名不能为空");
            }
           if(this.mobile==null || "".equals(this.mobile.trim())){
                    this.addFieldError("mobile", "手机号不能为空");
           }else{
                     if(!Pattern.compile("^1[358]\\d{9}$").matcher(this.mobile).matches()){
                    this.addFieldError("mobile", "手机号格式不正确");
                    }
           }

   }

2)运用验证框架

 

  1. 对所有方法进行校验
        在要校验的Action的包下建一文件 ActionName-validation.xml,如要对UserAction中所有方法都需要输入校验,则建文件UserAction-validation.xml
   
  2. 对某个方法进行校验

         在要校验的Action的包下建一文件 ActionName-action_url-validation.xml
   
    action_url 是访问该Action时除namespace外那些
 
    如: 要对UserAction中add()方法进行输入校验,则建文件UserAction-user_add-validation.xml
    该Action在struts.xml里的配置如下:
  
<struts>    
  <package name="person" namespace="/user" extends="struts-default">
         <action name="user_*" class="cn.itcast.action.PersonAction" method="{1}">
                   <result name="input">/index.jsp</result>
                   <result name="message">/WEB-INF/page/message.jsp</result>
         </action>
  </package>
</struts>

//表单里
<form action="user/user_add" method="post">
    ........
</form>

 

//ActionName-validation.xml
        这个文件的模板在struts2 的示例程序里可找到
        在xwork1.0.3.jar里的default.xml里可找到各种校验器

 

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" "
http://www.opensymphony.com/xwork/xwork-

validator-1.0.3.dtd">

<validators>

       <field name="username">                       
              <field-validator type="requiredstring">   
<!--校验器requiredstring-->
                     <param name="trim">true</param>     
  
<!--给requiredstring的trim属性注入值-->
                     <message>用户名不能为空!</message>
              </field-validator>
    </field>
   
    <field name="mobile">
            <field-validator type="requiredstring">   
<!--校验器requiredstring-->
                  <message>手机号不能为空!</message>
            </field-validator>
        <field-validator type="regex">          
  
<!--校验器regex-->
                  <param name="expression"><![CDATA[^1[358]\d{9}$]]></param>
                   <message>手机号格式不正确!</message>
        </field-validator>
    </field>
</validators>

 

 


<![CDATA[^1[358]\d{9}$]]>

<![CDATA[ *** ]]>  表示里面的东西只当做普通字符串对待,也就是说,可以是一些特殊字符

校验文件执行顺序:BaseAction-validation.xml  -> BaseAction-xxxxx-validation.xml ->UserAction-validation.xml ->UserAction-

xxxx-validation.xml

当冲突时,后面的把前面的覆盖

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值