防止针对特定操作的Struts 2验证

时间:2014-03-19 14:06:46

标签: java validation struts2 annotations struts2-interceptors

我在不同的动作类中有两个动作。 两个行动是:

  • 第一个动作(字段:电子邮件)
  • 第二个动作(字段:email,firstName)

两者都使用User对象来验证字段

@VisitorFieldValidator(appendPrefix = false)
    public User getUser() {
        return user;
    }

User类中的绑定验证属性

@RequiredStringValidator(key="global.emptyemail")
    @EmailValidator(key="global.invalidemail")
    public String getEmail() {
        return email;
    }

现在问题是它适用于1st action(不包括firstName字段),第二个操作包括我提供的firstName字段

@RequiredStringValidator(key="global.firstNameRequired", fieldName = "firstName")
    @RegexFieldValidator(type=ValidatorType.FIELD, key="global.SpecialCharacter",
            regexExpression = "[^&%$#@!~]*", fieldName = "firstName")
    public String getFirstName() {
        return firstName;
    }

第一个动作停止工作,可能会搜索不存在的firstName

那么,如何仅针对第二个动作进行firstName的验证? (不是第一次行动)

1 个答案:

答案 0 :(得分:0)

将以下参数添加到操作配置中,这样可以防止在其他操作/方法上运行验证器,而不是调用其他操作/方法。

interceptorRefs = @InterceptorRef(value="defaultStack", params = {"validation.validateAnnotatedMethodOnly", "true"})