JSF: Update bedingt über Erfolg oder Misserfolg von Validierungen
In meine JSF-Anwendung werde ich versuchen, einige Bedingungen in my Command button update-Attribut, so dass zur Validierung Misserfolg/Erfolg kann ich die Komponenten zu aktualisieren.
Mit Verweis auf PrimeFaces: bedingtes update auf die Validierung ich habe versucht, zu verwenden
<p:commandLink process="@form" listener="#{foo}"
update="somethingElse" oncomplete="if (!args.validationFailed) $("#link").click();">
<p:commandLink style="display:none" id="link"
update="something">
Aber ich weiß nicht, warum dieser Ansatz funktioniert nicht für mich.. click-Ereignis der jeweiligen Komponente nicht funktioniert für mich.. ich versuchte, führen Sie die akzeptierte Antwort auf die gleiche Frage , aber ich konnte nicht verstehen, wie das lösen der Zweck...
Meine Absicht ist es update-bedingt je nach Ergebnis der Validierung Erfolg oder Misserfolg... den Support habe ich 3 Komponenten X Y Z.. ich versuche, so etwas zu tun..
<p:commandLink process="@form" listener="#{foo}"
update="if(Validation fail)updateSomething[e.g X and Y] **else** update somethingelse[e.g X Y and Z]">
Um genauer zu sein, wenn der Validierungen fehlschlägt, dann möchte ich zum aktualisieren der X-und Y-Komponente nur dann, wenn die Validierungen erfolgreich, als ich es aktualisieren möchten, X Y & Z-Komponenten..
Bitte helfen Sie mir raus..
Vielen Dank im Voraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das erste problem ist, dass die EL-syntax, die Sie haben, es ist ungültig. Sie schließen den Wert des Attributs zu schnell durch die Verwendung
"
statt'
im JavaScript-code. Entweder Flucht verschachtelte Zitate mit\"
oder nutzen Sie einfach'
statt.Das zweite mögliche problem ist, dass die client-ID der
<p:commandLink id="link">
ist nicht"link"
überhaupt. Es ist standardmäßig vorangestellt, mit der ID des übergeordneten<h:form>
Komponente. Die client-ID ist das JSF-generierten HTML-element-ID. Öffnen Sie die Seite im webbrowser, Rechtsklick und View Source sehen Sie es selbst. Er sieht etwas wieid="formId:link"
. Sie müssen genau diese ID in der jQuery-Selektor.Siehe auch:
Eine alternative ist die Durchführung der konkreten Arbeit in der Methode hinter
listener="#{foo}"
statt.oncomplete="if (!args.validationFailed) $('#link').click();"
durchupdate="messages"
.validationFailed()
, aberisValidationFailed()
.validationFailed()
zurückvoid
und nicht einboolean
.Ich habe versucht, die Antwort markiert, aber es nicht lösen können mein Problem, da args nicht enthalten parameter namens "validationFailed" jedoch fand ich die Möglichkeit, das hinzufügen dieser parameter von der Steuerung.
& in der xhtml-habe ich den folgenden Befehl link