単純なリンクの「prettifier」など、何らかのアクション パラメータを使用する単純な複合コンポーネントを考えてみましょう。私はそれを「アジャクシファイ」したい。
<composite:interface>
<composite:attribute name="act" method-signature="java.lang.String action()"></composite:attribute>
<composite:attribute name="text" required="true"></composite:attribute>
<composite:clientBehavior name="click" event="action" targets="l"/> </composite:interface>
<composite:implementation>
<h:commandLink id="l" act="#{cc.attrs.action}" immediate="true"> <b>#{cc.attrs.text}</b> </h:commandLink> </composite:implementation>
クライアントの動作を通じてイベントを公開します。私はこのように使用します:
<h:panelGroup layout="block" id="outside">
#{mybean.otherdata} <br/>
<mc:mylink text="Click click" action="#{mybean.click}" >
<f:ajax event="click" render="outside"/>"
</mc:mylink><br/>
</h:panelGroup>
私が何をしたいのかがわかります。コンポジット定義の外で ajax レンダリングを実行したいのです。render を「outside」に設定するだけで恐ろしい<f:ajax> contains an unknown id
エラーが発生します。
はい、コンテナに名前を付けることは知っています。また、先頭にコロンを付けて絶対パスを指定できることも知っていますが、それは非常に扱いにくいものです。さらにいくつかのレイヤーにまとめると (これが要点です)、これらの参照を手動で連鎖させる必要があります。
render="../outside"
コンポーネントの親コンテナへの参照をスキップするような相対参照を行うことはできますか?
私は a4j で jsf 1 アプリを作成しましたが、このパターンはいたるところで使用されていました。