Das Problem, das ich habe, ist mit dem PrimesFaces 3.4.1 Kalender. Wenn Sie die Popup-Datumsauswahl entweder über die Schaltfläche oder über den Eingabefeld-Fokus aktivieren, können Sie nur gültige Daten auswählen, die gut funktionieren, glückliche Tage!
Das Problem tritt auf, wenn Sie manuell ein Datum in das Eingabefeld eingeben. Wenn Sie ein ungültiges Datum hinzufügen, schätzt die PrimeFaces-Kalenderkomponente diese in ein gültiges Datum um und sendet es dann, was bedeutet, dass die Back-End-Validierung erfolgt ein Nein. Einige interessante Übersetzungen unten:
Um diesen Wahnsinn neu zu erstellen, schaut euch den PrimeFaces-Kalender-Showcase an. p>
Ich habe eine Lösung mit dem readOnlyInput='true'
-Attribut gesehen, aber das scheint nur zu verhindern, dass Buchstaben in das Feld eingegeben werden, nicht Nummer oder Schrägstriche. Unten ist eine Instanz des von mir implementierten Kalenders:
Lösungsweise Ich bin offen für alle Vorschläge:
Vielen Dank im Voraus, das hat mir seit Wochen Probleme bereitet!
Das <p:calendar>
verwendet unter den Deckungen SimpleDateFormat
welches wiederum standardmäßig nachsichtig analysiert , wodurch die übergelaufenen Werte in die nächste Datumsmetrikstufe übergehen. Z.B. Der 32. Januar wird der 1. Februar usw.
In einfachen Java-Begriffen kann dies durch DateFormat#setLenient()
, übergibt false
. Siehe auch unter anderem diese Frage: Validieren eines Datums mithilfe des Datumsformats .
In JSF-Begriffen müssen Sie grundsätzlich einen benutzerdefinierten Konverter angeben, der ein nicht-mildes DateFormat
verwendet. Glücklicherweise bietet Standard-JSF bereits einen solchen Ansatz im Stil von <f:convertDateTime>
, damit Sie es direkt verwenden können.
Tags und Links java validation jsf primefaces calendar