[英]Spring MVC form validation Date field
我有一個表單字段,應將其轉換為Date對象,如下所示:
<form:input path="date" />
我需要通過以下方式進行驗證:
如果用戶將此字段留空。 我需要設置一些默認日期。
如果用戶設置了不可接受的格式,我需要提出一個錯誤。
問題是我可以滿足第一或第二要求。
解決這個問題有什么好的辦法嗎?
如果您將從Spring MVC驗證器轉到Hibernate,則有一種方法可以做到這一點。 沒什么大不了的,因為Hibernate驗證器可以與Spring Validator界面很好地配合使用(也可能對支持組的SmartValidator接口很感興趣)。
之后,您可以指定
@NotNull
日期字段上的注釋。
在屬性文件中只需添加
NotNull.[formName].[dateField]
=如果沒有發送日期,則顯示此消息typeMismatch.[formName].[dateField]
=如果spring無法將輸入轉換為日期對象(格式驗證錯誤),則顯示此消息
對於格式檢查,可以使用CustomDateEditor
。
使用此解決方案,您將在指定的每種情況下收到預期的驗證錯誤消息。
當我不得不面對這樣一個問題時,我會顛倒邏輯。 我沒有將默認值設置為空字段,但在操作的渲染部分中將默認值預加載了該字段。 因此,我可以只使用@DateTimeFormat(pattern="dd-MMM-yyyy")
安全地進行@DateTimeFormat(pattern="dd-MMM-yyyy")
因為一個空字段假定用戶故意刪除了默認值,這是一個錯誤。
因此,恕我直言,您應該在該表單的控制器的GET部分中設置默認值,並堅持使用簡單的@DateTimeFormat(pattern="dd-MMM-yyyy")
批注。
我有一個使用帶日期字段的@ModelAttribute
注釋對象的應用程序。 在對象類中,使用DateTimeFormat(pattern="dd/MM/yyyy")
在getter和setter上注釋date字段。 Spring(3.2.4)為date字段接受一個空值,將其簡單地設置為null。 因此,您應該使用@DateTimeFormat(pattern="dd-MMM-yyyy")
並且仍然能夠接受空值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.