java如何使用注释设置验证上下文
假设我有一个动作MyAction
,有一个字段User
有getter和setter
然后我有两个公开的公共方法,我想对对象用户使用访问者验证,但有两个不同的上下文,因此根据调用的方法,以两种不同的方式对用户进行验证
我只想对注释执行此操作,不进行验证。xml
参见示例
public class MyAction extends ActionSupport {
private User user;
public User getUser() {
return this.user;
}
public void setUser(User user) {
this.user=user;
}
public string execute() {
//some code here ...
return SUCCESS;
}
@Validations(
visitorFields = {@VisitorFieldValidator(context="myContext1", fieldName="user", key="error.message", message="A default error message", shortCircuit=true)}
)
public string save() {
//some code here ...
return SUCCESS;
}
@Validations(
visitorFields = {@VisitorFieldValidator(context="myContext2", fieldName="user", key="error.message", message="A default error message", shortCircuit=true)}
)
public string update() {
//some code here ...
return SUCCESS;
}
//...
}
现在我想将上下文(myContext1和myContext2)指定到用户对象内的注释中,这样一些验证器在MyAction上调用save()方法时启动,而其他验证器在调用update()时启动
我想象这样的情况:
public class User implements Serializable {
private Integer id;
private String name;
@RequiredFieldValidator(context="myContext2", message = "You must enter a value for data.")
public void setId(Integer id) {
this.id=id;
}
@RequiredFieldValidator(context="myContext1", message = "You must enter a value for data.")
public void setName(String name) {
this.name = name;
}
//some code... getters, etc...
}
我希望这样做,例如,在创建操作(方法save())期间,名称是必需的,而在更新操作(方法update())期间,id是必需的。不幸的是,在我看来RequiredFieldValidator,所以Struts2中的任何其他验证器注释都不支持“上下文”字段
我知道我可以使用User-myContext1-validation。xml和用户myContext2验证。xml文件(我没有尝试过,但我想我已经理解了它是可以实现的),但我只想使用注释
你知道我如何用注解来做这件事吗
共 (0) 个答案