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

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

代码17.11 BookAction.java[/size]

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";
}
}

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

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

注意:被校验的Action要继承ActionSupport类,并要在action配置中指定名为input的JSP,因为Struts 2在校验失败后会自动返回input页面。[/size]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值