Mam aplikację Java EE i chcę zweryfikować datę. sznurkiem zrobić to:JSR 303 - javax.validation - Zweryfikuj datę
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
...
@NotNull
@Size(min = 1, max = 255)
private String myString;
Ale teraz mam dwie daty, które chcę, aby potwierdzić. Użytkownik może w systemie frontend napisać String w polu tekstowym, które zostanie przesłane przez JSON (muszę użyć pola tekstowego, nie mogę użyć datepika).
Więc moje backend ma to w moim klasy domeny:
@DateTimeFormat(pattern = "dd.MM.yy")
@Temporal(value=TemporalType.TIMESTAMP)
private Date myStartDate;
@DateTimeFormat(pattern = "dd.MM.yy")
@Temporal(value=TemporalType.TIMESTAMP)
private Date myEndDate;
Chcę sprawdzić poprawność przeciwko formacie „dd.mm.rrrr”. Jak to zrobić?
I, nie sądzę, ale czy istnieje automatyczna walidacja, aby sprawdzić, czy data rozpoczęcia jest przed datą końcową? Znalazłem tylko @Future
i @Past
.
A więc jedynym rozwiązaniem jest użycie @Pattern, wyrażenia regularnego ?!
Z góry dziękuję za pomoc, Pozdrawiam.
Kilka rzeczy: '@ DateTimeFormat' nie jest częścią JSR-303, a' mm' oznacza minuty, a nie miesiące. W jaki sposób zmienianie '' dd.MM.yy "' na '" dd.MM.yyyy "' nie działa? Ponieważ wydaje się, że używasz Spring MVC (do którego należy ta adnotacja), możesz poprawić/retagować swoje pytanie. Przynajmniej JSR 303 nie oferuje adnotacji [any] (http://download.oracle.com/javaee/6/api/javax/validation/constraints/package-summary.html). – BalusC
Tak, mogę zmienić na "dd.MM.rrrr", ale nie ma sprawdzania poprawności. – Tim
Nie rozumiem także, w jaki sposób sprawdzanie poprawności wzorca jest użyteczne w 'Dacie' zamiast' String', ponieważ 'Date' nie przechowuje żadnych informacji o jego wewnętrznym formacie. Tak czy inaczej, nie robię Springa, ale myślę, że wystarczy zaimplementować [Validator] (http://static.springsource.org/spring/docs/3.0.x/reference/validation.html). Tak przynajmniej zrobiłbym, gdyby to był JSF. – BalusC