2017-09-28 10 views
0

クレジットカード情報を入力として処理するREST APIがあります。必須のデータを検証するために、@ NotNullなどのさまざまなjavax.validationアノテーションを使用しています。javax.validation制約または注釈を使用したクレジットカード有効期限確認

クレジットカードの有効期限を確認するにはどうすればよいですか?

注:クレジットカードの有効期限には日付が含まれていません。月と年だけが含まれています。例:12/17カードは12月2107

public class CreditCardData { 

    @NotNull 
    private Long cardNo 

    @NotNull 
    //WHAT ANNOTATION SHOULD I PUT HERE SO THAT IT IS FUTURE DATE ????? 
    //WILL CONTAIN ONLY MON/YY, EXAMPLE: 12/17 
    private String expiryDate 

} 

答えて

1

私はカードの有効期限を検証し、既製の注釈を知らないで期限切れになるが、それは独自に作成するのは非常に簡単だということを意味します。

あなたの注釈を作成します。

@Target({ METHOD, FIELD, PARAMETER }) 
@Retention(RUNTIME) 
@Constraint(validatedBy = CardExpirationValidator.class) 
public static @interface CardExpiration { 
    String message() default "Expiration invalid"; 

    Class<?>[] groups() default {}; 

    Class<? extends Payload>[] payload() default {}; 
} 

javax.validation.Constraint注釈を - CardExpirationValidator.class - それはCardExpiration注釈が別のクラスによって検証制約であると述べています。では、検証ロジックを使ってそのクラスを作成しましょう。

public class CreditCardData { 

    @NotNull 
    private Long cardNo; 

    @NotNull 
    @CardExpiration 
    private String expiryDate; 
} 

話題で見るJerseyさん/ JBossのマニュアル:

public static class CardExpirationValidator implements ConstraintValidator<CardExpiration, String> { 
    @Override 
    public void initialize(CardExpiration annotation) { 
     //Not much to do - this is invoked before "isValid", and can be used to pass annotation parameters 
    } 

    @Override 
    public boolean isValid(String value, ConstraintValidatorContext context) { 
     //Insert validation logic for "value" here. Return true/false 
    } 
} 

今、あなたは、このようなパラメータとフィールドに注釈を付けることができます:このようなものになるだろう。

関連する問題