Java 如何使用注释设置验证上下文

Java 如何使用注释设置验证上下文,java,struts2,visitor,struts-validation,Java,Struts2,Visitor,Struts Validation,假设我有一个actionMyAction,有一个字段User,其中包含getter和setter 然后我有两个公开的公共方法,我想对对象用户使用访问者验证,但有两个不同的上下文,因此根据调用的方法,以两种不同的方式对用户进行验证 我只想使用注释,不使用validation.xml 参见示例 public class MyAction extends ActionSupport { private User user; public User getUser() {

假设我有一个action
MyAction
,有一个字段
User
,其中包含getter和setter

然后我有两个公开的公共方法,我想对对象用户使用访问者验证,但有两个不同的上下文,因此根据调用的方法,以两种不同的方式对用户进行验证

我只想使用注释,不使用validation.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和User-myContext2-validation.xml文件(我没有尝试过,但我认为我已经理解了这是可以做到的),但我只想使用注释


您知道如何使用注释实现这一点吗?

这是一个很好的问题,但我想混合方法最接近您想要的结果