Ich habe eine CRUD-Seite, die Daten aus einer Abfrage (eine Liste von Domänenobjekten) in einer Datentabelle von Primecafts anzeigt.
%Vor%Durch Klicken auf den Bearbeiten-Button wird ein Dialog angezeigt:
%Vor%Es funktioniert. Jetzt möchte ich F1 zu einem Pflichtfeld machen.
Ich füge dem inputText-Feld das Attribut "required" hinzu und was passiert?
Wenn ich versuche, das Formular ohne das erforderliche Feld zu bestätigen, wird die Entität nicht bearbeitet (das stimmt), aber der Dialog ist geschlossen (das ist NICHT richtig!)
Wenn ich den Dialog wieder öffne, kann ich die rote Markierung im erforderlichen (und ungültigen) Feld sehen.
Ich möchte verhindern, dass der Dialog geschlossen wird, wenn das Formular ungültig ist.
Muss ich ein JS schreiben oder wird JSF mir helfen?
Die PrimeFaces-Ajax-Antwort setzt ein args
-Objekt in den Bereich, der eine validationFailed
-Eigenschaft hat. Du könntest es einfach nutzen.
(Die args
Vorüberprüfung ist erforderlich, um keinen JS-Fehler zu verursachen, wenn während der Anfrage eine Ausnahme ausgelöst wird)
Sie könnten es wie folgt in eine wiederverwendbare JS-Funktion umwandeln.
%Vor% %Vor%dieser Beitrag ist jetzt drei Jahre alt, aber ich habe hilfreich gefunden, so dass meine Ergebnisse anderen helfen können.
In PF 5.x scheint es zumindest so zu sein, dass die von BalusC bereitgestellte Lösung auf zwei Arten modifiziert werden muss. (1) füge das Argument "args" zu dem Aufruf in einem unvollständigen Ereignis-Handler hinzu, und (2) verwende das PF primefaces-Grundelement, um das Widget in PF-Tabellen zu identifizieren. Hier ist der Code, den ich verwende:
%Vor%Ich glaube, das ist die sauberste Lösung. Dadurch müssen Sie Ihren Tastencode nicht ändern . Diese Lösung überschreibt den Prototyp der verborgenen Funktion.
%Vor%Auf diese Weise können Sie Ihren Code wie folgt behalten:
%Vor%um den Dialog Bei Validierung geöffnet zu halten fehlgeschlagen, müssen Sie nur den commandButton wie folgt setzen:
%Vor%Ich werde hier ein komplettes Beispiel hinterlassen:
%Vor%Tags und Links validation jsf jsf-2 primefaces