Ich versuche, eine übergeordnete Komponente aus einem Ereignis einer zusammengesetzten Komponente mit f:ajax
zu aktualisieren.
Die zusammengesetzte Komponente ist hier:
%Vor%Wenn Sie diese Komponente nun wie folgt verwenden:
%Vor%Ich erhalte den folgenden Fehler:
enthält eine unbekannte ID 'model' - kann sie nicht im Kontext der Komponente make
findenDa sich die zu aktualisierende Komponente außerhalb des CC befindet, müssen Sie sie anders ansprechen. Gib deinem Formular zuerst eine ID:
%Vor%Dann adressiere die Zielkomponente von deinem cc wie folgt:
%Vor%Beachten Sie den abschließenden Doppelpunkt, mit dem JSF das Attribut vom Dokumentstamm aus durchsuchen kann.
Ich hatte vor einiger Zeit das gleiche Problem, nur um Informationen zu erhalten, überprüfte ich die Quellen der jsf mojara-Implementierung; Hier scheint es zu funktionieren: Die Klasse ajaxBehaviorRendered analysiert beim Analysieren eines f: ajax -Elements den Inhalt des render -Attributs mit der Methode getResolvedId:
%Vor%Der Punkt ist die Methode findComponent: Diese benötigt die Basiskomponentenbasis als Stratpunkt für die Suche im Komponentenbaum. Wenn der Bezeichner mit dem Zeichen ":" beginnt, ist die Komponentenbasis der ViewRoot.
%Vor%Sonst ist die Basiskomponente das nächste übergeordnete Element der aktuellen Komponente vom Typ NamingContainer (dh Ihre zusammengesetzte Komponente, in der Sie Ihre Ajax-Komponente definieren).
%Vor%Dann beginnt es in beiden Fällen von diesem Anfang an, die Komponente mit der angegebenen Kennung zu durchsuchen.
Dieses Verhalten ist das von jsf angegebene.
Aus meiner Sicht müssen Sie, wenn Sie auf eine Komponente außerhalb des Composites verweisen müssen, den vollständigen Namen definieren und das Präfix ":" gefolgt vom Attribut "cc.clientId" verwenden.
Tags und Links ajax jsf-2 composite-component