TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
使用@java注解配置Validator是需要继承ActionSupport类,并用@Validation注解,表示该Action需要数据校验。然后在方法上配置@Validations。@Validations可指定多条校验规则,具体的配置:
@Validation
public class BookAction extends ActionSupport implements Validateable{
@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-12-12",message="日期必须大于${min}小于${max},当前值为${book.publishedDate}."
)
}
)
public String add(){ //添加书籍
bookList.add(book); //放到List中
title = "<br/><br/>添加书籍成功<br/><br/>"; //设置title
return "success"; //返回成功页面
}
@SkipValidation
public String list(){ //列出所有书籍
return "list"; //返回列表页面
}
}
该配置与前面的XML配置是等价的。因为只对addBook.action进行校验,因此欧只在方法add()上添加了@Validations以及校验规则。其他不需要校验的方法需要加上@SkipValidation,否则也会被校验.
另外,使用@Validator时,struts2默认的验证方式是全局验证模式,因此只能配置一种验证方式。如果要对同一个Action的两个方法配置两种不同的验证方式,需要重写struts2的默认拦截器。
注意:被校验的Action要继承ActionSupport类,并要在Action配置中指定名为input的JSP,因为Struts2在校验失败后会自动返回input页面。
|
|