2016-12-30 74 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