Nach einem Validierungsfehler erhalten nachfolgende Ajax-Anforderungen Werte von UI-Komponenten und nicht von Beans
In meiner JSF 2-basierten Anwendung habe ich ein Formular, das (neben anderen UI-Komponenten) einige Kontrollkästchen enthält.
An den Kontrollkästchen habe ich Ajax-Anforderungen registriert, die ausgelöst werden, wenn sie aktiviert sind. Die Ajax-Anforderungen aktualisieren lediglich den Wert eines anderen Kontrollkästchens in der Backing-Bean. Infolgedessen wird auch das andere Kontrollkästchen aktiviert (wenn es erneut gerendert wird - da es den aktualisierten Wert aus der Backing-Bean in der Render-Antwortphase übernimmt).
Dies funktioniert einwandfrei, bis das gesamte Formular gesendet wird und Überprüfungsfehler auftreten. Dann funktionieren die Ajax-Anforderungen immer noch und ändern den Wert auf der Backing-Bean, aber in der Phase des erneuten Renderns des aktualisierten Kontrollkästchens wird der Wert dafür nicht von der Backing-Bean, sondern von einem zwischengespeicherten Wert übernommen, der von a stammtComponentStateHelper
Klasse.
Soweit ich weiß, wird dies für die neue Funktion von JSF 2 verwendet, um nur teilweise Änderungen am Komponentenbaum zu speichern.
Was ich nicht verstehe ist: Wie hängt das mit der Validierungsphase zusammen? Warum gibt es einen zwischengespeicherten Wert in derStateHelper
Klasse für mein Kontrollkästchen, wenn bei der Validierung Fehler festgestellt wurden?