2016-12-30 84 views
1

我有春天休息服務有效載荷對象與裏面的日期。Spring Java日期模式驗證

現在我想扔分析或驗證異常,如果傳遞的日期是不是在YYYY-MM-DD格式。例如 - 如果他們12-01-2016,我想拋出異常,除了2016-12-01。請指教

注 - 我試圖解析日期直接在這裏使用getDob,我已經看到了很多被解析字符串的例子。

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。

其次,你可能需要一個定製JsonSerializer/JsonDeserializer在這裏,如果你正在使用傑克遜。這應該是微不足道的寫作。這是一個example

+0

非常感謝您的建議。我注意到一件事情,默認情況下LocalDate seralizer格式爲yyyy-MM-dd,這很好,我正在尋找。此外,我想知道是否有一種方法來捕捉這個解析/驗證異常與你給的例子中的下面的答案。 http://stackoverflow.com/a/38731094/5030709 –

+0

Spring和類似的框架支持Java驗證API。在某些情況下,我選擇將日期建模爲REST調用的字符串,然後將它們從DTO內部映射到具有適當日期/時間對象的域對象。出於你的目的,也許你可以讓你的自定義反序列化器拋出一個特殊的異常,然後爲該異常返回一個400或類似的響應。 – massfords