struts2校验(三):注解式(java annotation 验证)

Struts 2也支持用Java注解配置数据校验。Action同样需要继承自ActionSupport类,并用@Validation注解,表示该Action需要数据校验。然后在方法上配置@Validations。@Validations可指定多条校验规则,具体的配置见下面的代码:

代码17.11  BookAction.java


package com.helloweenvsfei.struts2.action;  
import org.apache.struts2.interceptor.validation.SkipValidation;  
import com.opensymphony.xwork2.ActionSupport;  
import com.opensymphony.xwork2.validator.annotations.DateRangeFieldValidator;  
import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator;  
import com.opensymphony.xwork2.validator.annotations.Validation;  
import com.opensymphony.xwork2.validator.annotations.Validations;  
import com.opensymphony.xwork2.validator.annotations.ValidatorType;  
 
@Validation                                         // 标记为需要数据校验  
public class BookAction extends ActionSupport { // 继承自ActionSupport  
 
    // 添加书籍页面  
    @Validations(  
            requiredStrings = {   
                    @RequiredStringValidator(type = ValidatorType.SIMPLE, 
trim=true, fieldName = "book.name", message = "请输入 
书籍名称. *"),  
                    @RequiredStringValidator(type = ValidatorType.SIMPLE,
trim=true, fieldName = "book.author", message = "请输 
入书籍作者. *")  
                    },  
            dateRangeFields = {@DateRangeFieldValidator(type = Validator
Type.SIMPLE, fieldName = "book.publishedDate", min = 
"1900-01-          01", max = "2200-01-01", message = "日期必须大于
${min} 小于                ${max}, 当前值为 ${book.publishedDate}.")}  
    )  
    public String add() {   
        bookList.add(book);  
        title = "<br/><br/>添加书籍成功<br/><br/>";  
        return "success";  
    }   
 
      
    @SkipValidation                     // 书籍列表,@SkipValidation跳过校验  
    public String list() {  
        return "list";  
    }  
} 

该配置与上面的XML配置是等价的。因为只对addBook.action进行校验,因此只在方法add()上添加了@Validations以及校验规则。其他不需要校验的方法需要加上@SlipValidation,否则也会被校验。

另外,使用@Validator时Struts 2默认的验证方式是全局验证模式,因此只能配置一种验证方式。如果要对同一个Action的两个方法配置两种不同的验证方式,需要重写Struts 2的默认拦截器。

注意:被校验的Action要继承ActionSupport类,并要在action配置中指定名为input的JSP,因为Struts 2在校验失败后会自动返回input页面。

你可能感兴趣的:(Java Annotation)