2

我有一个流动结构的豆子

public class Payment {
private String payType;
@Valid
private CreditCard creditCard;
private BankAccount bankAccount;
}

信用卡类

public class CreditCard {
@Pattern(regexp="(\\d{16})")
private String cardNumber;
@NotEmpty
@Size(max=40)
private String name;
@NotEmpty
private String securityCode;
@Future
private Date expiration_Date;
}

像这样验证也适用于银行帐户类。现在我想要的是如果 PayType 是 Credit,那么我需要验证 CreditCard,否则我需要验证 BankAccount。我知道对于这种类型,我们可以编写一个自定义验证器,如链接JSR 303 Validation

但在这种情况下,我需要为类的所有字段编写验证逻辑。可以编写一些逻辑,以便根据 paytype 现有的验证将起作用。那只是我想要@Valid根据类型的注释。请帮我

4

1 回答 1

0

我终于得到了问题的解决方案,我发布了答案,以便对其他人有所帮助。逻辑是我需要提供一个自定义方法,该方法将返回我想要验证的对象。像下面

public class Payment {
private String payType;

private CreditCard creditCard;
private BankAccount bankAccount;

@Valid
public Object getValid(){
    if(creditCard!=null && payType.equals("credit"))
        return creditCard;
    if(bankAccount !=null&& payType.equals("bank")){
        return bankAccount;
    }
    return null;
}  
}
于 2013-04-04T09:03:09.223 回答