我有一個Java EE應用程序,我想驗證日期。 用繩子我這樣做:JSR 303 - javax.validation - 驗證日期
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
...
@NotNull
@Size(min = 1, max = 255)
private String myString;
但現在我有,我想驗證兩個日期。用戶可以在前端系統中的文本字段中寫入一個字符串,通過JSON傳輸(我必須使用文本字段,我不能使用日期選擇器)。
所以我的後端確實有這在我的領域類:
@DateTimeFormat(pattern = "dd.MM.yy")
@Temporal(value=TemporalType.TIMESTAMP)
private Date myStartDate;
@DateTimeFormat(pattern = "dd.MM.yy")
@Temporal(value=TemporalType.TIMESTAMP)
private Date myEndDate;
我想驗證對格式爲「DD.MM.YYYY」。如何才能做到這一點?
而且,我不這麼認爲,但有沒有自動驗證來檢查開始日期是否在結束日期之前?我只發現@Future
和@Past
。
所以唯一的解決方案是使用@Pattern,一個正則表達式?!
預先感謝您的幫助,最好的問候。
幾件事情:'@ DateTimeFormat'不是JSR-303的一部分,'mm'代表幾分鐘而不是幾個月。另外如何將''dd.MM.yy'''改爲'「dd.MM.yyyy」'失敗?既然你似乎在使用Spring MVC(這個註釋是其中的一部分),你可能想要修改/重寫你的問題。至少,JSR 303不提供[任何](http://download.oracle.com/javaee/6/api/javax/validation/constraints/package-summary.html)註釋。 – BalusC
是的,我可以更改爲'dd.MM.yyyy',但沒有驗證。 – Tim
由於'Date'沒有存儲任何有關其內部格式的信息,我也無法理解模式驗證如何在'Date'而不是'String'上有用。無論如何,我不做Spring,但我認爲你只需要實現一個[Validator](http://static.springsource.org/spring/docs/3.0.x/reference/validation.html)。如果是JSF,至少我會這樣做。 – BalusC