私の問題は、要素ツリーの現在の要素の下で RichFacesreRender
が機能しないことです。上位要素のみが再レンダリングされます。
AJAXで下位要素にアクセスする方法はありますか?
どんな助けでも大歓迎です!ダニエル
編集この質問をより一般的な質問に編集しました。元の質問に興味がある場合は、リビジョンを参照してください。
reRender
id
reRender するターゲット オブジェクトのを提供することで機能します (同じネーミング コンテナー内 -form
ほとんどの場合) 。id
これは、html 仕様によると、一意の文字列である必要がありますreRender
動的な値を許可します-つまりreRender="#{myBean.currentItemsToRerender}
それに基づいて、あなたが望むものを達成できるはずだと思います(完全には明らかではありませんが)
アップデート:
UIComponent.findComponent(..)
ID を解決するための明確に定義されたアルゴリズムがあります。したがって、絶対参照の場合は、reRendered id で開始し :
、ネーミング コンテナーの階層をたどる必要があります。
changePanel111()
下位要素のコンテンツを変更する例を次に示します。
<h:form id="form" prependId="true">
<rich:panel id="PANEL1">
<h:outputText id="PANEL1TEXT" value="#{ajaxTestBean.panel1}"/>
<rich:panel id="PANEL11">
<h:outputText id="PANEL11TEXT" value="#{ajaxTestBean.panel11}"/>
<rich:panel id="PANEL111">
<h:outputText id="PANEL111TEXT" value="#{ajaxTestBean.panel111}"/>
</rich:panel>
</rich:panel>
<rich:panel id="PANEL12">
<h:outputText id="PANEL12TEXT" value="#{ajaxTestBean.panel12}"/>
<br/>
<a4j:commandLink value="CHANGE PANEL12" action="#{ajaxTestBean.changePanel12}">
<a4j:support reRender="PANEL12" event="onclick"/>
</a4j:commandLink>
<br/>
<a4j:commandLink value="CHANGE PANEL111" action="#{ajaxTestBean.changePanel111}">
<a4j:support reRender="form:PANEL111" event="onclick"/>
</a4j:commandLink>
</rich:panel>
</rich:panel>
</h:form>
下の要素をとして識別する必要があることに注意してくださいform:PANEL111
。
お役に立てれば!
私の MyFaces+Richfaces アプリで<rich:panel>
は、選択した回答で説明されているようにタグが機能しませんでした。に変更すると<a4j:outputPanel ajaxRendered="true" />
、ここにあるように動作し始めました " <a4j:commandLink> Not Rerendering "
構成: MyFaces 2.1.10 (テンプレート化に使用される Facelets) および Richfaces 4.2.3。
これが役立つことを願っています。
reRender は、フォーム外の任意のコンポーネントを指すこともできます。たとえば、これは機能します:
<h:form>
<a4j:commandButton reRender="panel"/>
</h:form>
<h:panelGrid id="panel">
...
</h:panelGrid>