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 に答える