17.3.4 使用@Java注解配置Validator

http://book.51cto.com  2009-12-15 16:53  刘京华  清华大学出版社  我要评论(0)
摘要:《Java Web整合开发王者归来(JSP+Servlet+Struts+Hibernate+Spring)》第17章Struts 2.x高级应用,本章讲述的是Struts 2颠覆了Web编程的传统,Action中完全去掉了request、response等Servlet API,并自动完成数据转换、赋值。本节为大家介绍使用@Java注解配置Validator。
标签:Java Web  Java Web整合开发王者归来

限时报名参加“甲骨文全球大会·2010·北京”及“JavaOne和甲骨文开发者大会2010”
17.3.4  使用@Java注解配置Validator
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 = ValidatorType.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,spring,Web,struts,出版)