有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案