Gibt es eine Möglichkeit, dass eine JSF-Backing-Bean eine Aktualisierung einer Komponente auf der Seite verursacht? Ich möchte keine Ajax-Komponente mit Update-Attribut verwenden, um eine Komponente auf der Seite zu aktualisieren. Ich muss ein Update innerhalb einer JSF-Backing-Bean-Methode auslösen. Beachten Sie, dass die Aktualisierung auf der Seite nach Abschluss dieser Methode oder vor deren Abschluss erfolgen kann. Ich verwende PrimeFaces, wenn es eine Lösung gibt, die sich aus der Verwendung von PrimeFaces ergibt.
jsf-2
primefaces
Empfohlene Vorgehensweise
quelle
quelle
Antworten:
Fügen Sie mithilfe der Standard-JSF-API die Client-ID hinzu
PartialViewContext#getRenderIds()
.Verwenden Sie die PrimeFaces-spezifische API
PrimeFaces.Ajax#update()
.Oder wenn Sie noch nicht auf PrimeFaces 6.2+ sind, verwenden Sie
RequestContext#update()
.Wenn Sie die JSF-Dienstprogrammbibliothek OmniFaces verwenden , verwenden Sie
Ajax#update()
.Beachten Sie unabhängig von der Art und Weise, dass diese Client-IDs absolute Client-IDs darstellen sollten, denen nicht das
NamingContainer
Trennzeichen vorangestellt ist, wie Sie es von der Ansichtsseite aus tun würden.quelle
<f:ajax listener>
oder<f:event type="preRenderView" listener>
<f:ajax>
. Dies wird seit JSF 2.0 eingeführt. Sie müssen auf spezifische Funktionen der JSF 1.2-Komponentenbibliothek zurückgreifen.Ich habe auch versucht, eine Komponente von einer jsf-Backing-Bean / Klasse zu aktualisieren
Nach dem Bearbeiten der UI-Komponente müssen Sie Folgendes tun:
Es ist wichtig, die clientId anstelle der (serverseitigen) componentId zu verwenden !!
quelle
Das
RequestContext
ist veraltet von Primefaces 6.2 . Verwenden Sie ab dieser Version Folgendes:Und um Javascript auszuführen aus dem Backbean , gehen Sie folgendermaßen vor:
Referenz:
quelle
Alles ist nur möglich, wenn genügend Zeit für Recherchen vorhanden ist :)
Was ich tun muss, ist, Leute zu haben, die ich in eine Benutzeroberfläche iteriere: Wiederholen und Anzeigen von Namen und anderen Feldern in Eingaben. Aber eines der Felder war singleSelect - A und je nach Wert aktualisieren Sie eine andere Eingabe - B. sogar ui: repeat habe keine ID, die ich eingegeben habe, und sie wurde im DOM-Baum angezeigt
Dann waren die IDs im HTML so etwas wie:
Als in der Ansicht habe ich eine Methode wie:
Und seine Umsetzung war in der Bohne wie:
Auf diese Weise habe ich das Element aus der Bean ohne Probleme aktualisiert. PF Version 6.2
Viel Glück und viel Spaß beim Codieren :)
quelle
personType
, ist es überflüssig, sowohl die Person als auch den Index an den Ajax-Listener weiterzuleiten. Sie können sowohl die ID als auch den Wert aus dem Ereignis abrufen. Möglicherweise ist Ihre Lösung für Ihren speziellen Anwendungsfall erforderlich, aber da es kein vollständiges Beispiel gibt (mit minimal reproduzierbarem Beispielgeschmack ), ist es schwer zu sagen.