2016-12-30 5 views
1

私はSpring Rest Serviceペイロードオブジェクトの中にDateを持っています。Spring Javaの日付から日付へのパターン検証

これで、渡された日付がyyyy-MM-dd形式でない場合、構文解析または検証例外が発生します。例 - 12-01-2016の場合、2016-12-01以外の例外をスローしたい助言してください

注 - ここではgetDobを使用してここで直接日付を解析しようとしていますが、私はStringを解析している多くの例を見てきました。

public class PayLoad { 
    private Date dob = null; 
    @JsonFormat(pattern = "yyyy-MM-dd") 
    public Date getDob() { 
     return dob; 
    } 
    @JsonFormat(pattern = "yyyy-MM-dd") 
    public void setDob(Date dob) { 
     this.dob = dob; 
    } 
} 

答えて

0

まず、生年月日をjava.util.Dateとしてモデル化しません。 java.time.LocalDateを使用する必要があります。

第2に、ジャクソンを使用している場合は、おそらくカスタムJsonSerializer/JsonDeserializerが必要です。それは書くのが簡単なはずです。 exampleです

+0

アドバイスをいただきありがとうございます。私は、デフォルトでLocalDateのseralizerがyyyy-MM-dd形式を取っていることに気付きました。これは良いと私が探していたものです。また、私はあなたが与えた例では、次の答えでこの解析/検証例外をキャッチする方法があるのだろうかと思います。 http://stackoverflow.com/a/38731094/5030709 –

+0

春などのフレームワークでJava Validation APIがサポートされています。場合によっては、REST呼び出しの文字列としてモデル化された日付を選択し、DTOから適切な日付/時刻オブジェクトを持つドメインオブジェクトに内部的にマップします。あなたの目的のために、おそらく、カスタムデシリアライザに特別な例外をスローして、そのような例外のExceptionMapperを400または同様の応答を返すようにすることができます。 – massfords