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 = "

添加书籍成功

";
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页面。

你可能感兴趣的:(17.3.4 使用@Java注解配置Validator)