zoukankan      html  css  js  c++  java
  • Struts2中validate数据校验的两种常用方法

    本文主要介绍Struts2中validate数据校验的两种方法及Struts2常用校验器.

     1.Action中的validate()方法

    Struts2提供了一个Validateable接口,这个接口只有一个valudate()方法,只要类实现此接口name可以直接被Struts2调用,ActionSupport类就实现了Validateable接口,但是它并没有重新validate()方法.

    validate()方法会在execute方法执行前执行,去进行一些数据检验,当且仅当数据校验正确的时候才会去执行execute()方法,如果错误则将错误添加到filedErrors域中.但是问题是如果一个action中有多个逻辑处理方法,且不同的处理逻辑需要不同的校验规则,但是validate会对所有的处理逻辑使用相同的检验规则,为了解决这一问题,需要我们使用validateXxx()方法,其中Xxx表示处理逻辑的方法名.

    Action类:

    public class LoginAction extends ActionSupport{
    private static final long serialVersionUID = 1L;
    private String userName;
    private String userPassword;
    public String execute(){
    System.out.println("execute");
    return SUCCESS;
    }
    public String login(){
    System.out.println("login");
    return SUCCESS;
    }
    public void validate(){
    System.out.println("validata");
    }
    public void validateLogin(){
    System.out.println("validatelogin");
    if(!(userName.equals("sbw") && userPassword.equals("123"))){
    addFieldError("error","wrong info");
    }
    }
    public String getUserName() {
    return userName;
    }
    public void setUserName(String userName) {
    this.userName = userName;
    }public String getUserPassword() {
    return userPassword;
    }
    public void setUserPassword(String userPassword) {
    this.userPassword = userPassword;
    }
    }

    struts.xml

    <package name="main" extends="struts-default">
    <global-results>
    <result name="login">/login.jsp</result>
    </global-results>
    <action name="loginPerson" class="com.sbw.test.action.LoginAction" 
    method="login">
    <result name="success">/success.jsp</result>
    <result name="input">/validateLogin.jsp</result></action></package>

    success.jsp

    <body>登录成功 <s:property value="account"/></body>

    validateLogin.jsp

    <body><s:fielderror/></body>

    运行结果(第一次测试正确,第二次测试错误)

    这里写图片描述

    这里写图片描述

    这里写图片描述

    2.通过XWork校验框架

    使用validate方法校验时,如果Web应用中存在大量Action就需要多次重写validate方法,因此可以使用XWork的validator框架来对Struts2进行数据校验,减少代码量。

    在com.action包下创建验证文件LoginAction-validation.xml,注:当一个Action中有多个业务处理方法是,命名规则为:actionName-methodName-validation.xml,其中actionName为Action类名,methodName为Action中某个业务处理方法的方法名,并且文件的搜索顺序与方式一种validate()和validateX()一样。

    Login-validation.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE validators PUBLIC"-//Apache Struts//XWork Validator 1.0.2//EN""http://struts.apache.org/dtds/xwork-validator-1.0.2.dtd">
    
    <validators>
     //<field>: 为每一个需要校验的字段添加一个验证元素<field>,name属性表示要校验的字段名。
    <field name="userName">
    //<field-validator>: 使用该元素来指定校验规则,type属性为校验规则名
    <field-validator type="requiredstring">
    // <message>: 使用该元素来指定校验出错时要显示的标签,key属性指向资源文件中的标签名
    <message>the name should not null</message>
    </field-validator>
    
    </field><field name="userPassword">
    <field-validator type="requiredstring">
    <message>the password should not null</message>
    </field-validator>
    </field>
    </validators>

     该文件与Action类的class文件位于同一个路径下.

    再次运行结果为:

    这里写图片描述

    上述字段校验方式为字段校验方式,还有一种方式是非字段校验方式,如下:

    Login-validation.xml:

    <validators>
    
    <validator type="requiredstring">
    
    <param name="fieldName">userName</param>
    
    <message>name should not null</message>
    
    </validator>
    
    <validator type="requiredstring">
    
    <param name="fieldName">userPassword</param>
    
    <message>password should not null</message>
    
    </validator>
    
    </validators>

    结果与字段校验方式一样

    Struts2常用校验器

  • 相关阅读:
    iOS----------Runtime 获取属性列表 方法列表
    iOS----------四舍五入(只舍不入)
    iOS----------时间戳与NSDate
    iOS----------Apple id如何关闭双重认证?
    iOS----------最全Emoji编码
    iOS----------Bad Gateway
    iPhone手机怎么投影到MacPro上
    iOS----------use_frameworks!
    Win 常用快捷键
    电脑硬件介绍
  • 原文地址:https://www.cnblogs.com/daweige/p/8058060.html
Copyright © 2011-2022 走看看