2

私の問題は、要素ツリーの現在の要素の下で RichFacesreRenderが機能しないことです。上位要素のみが再レンダリングされます。

AJAXで下位要素にアクセスする方法はありますか?

どんな助けでも大歓迎です!ダニエル

編集この質問をより一般的な質問に編集しました。元の質問に興味がある場合は、リビジョンを参照してください。

4

4 に答える 4

8
  • reRenderidreRender するターゲット オブジェクトのを提供することで機能します (同じネーミング コンテナー内 -formほとんどの場合) 。
  • idこれは、html 仕様によると、一意の文字列である必要があります
  • reRender動的な値を許可します-つまりreRender="#{myBean.currentItemsToRerender}

それに基づいて、あなたが望むものを達成できるはずだと思います(完全には明らかではありませんが)

アップデート:

UIComponent.findComponent(..)ID を解決するための明確に定義されたアルゴリズムがあります。したがって、絶対参照の場合は、reRendered id で開始し :、ネーミング コンテナーの階層をたどる必要があります。

于 2010-01-28T15:28:45.330 に答える
3

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

お役に立てれば!

于 2010-09-16T14:21:33.213 に答える
0

私の MyFaces+Richfaces アプリで<rich:panel>は、選択した回答で説明されているようにタグが機能しませんでした。に変更すると<a4j:outputPanel ajaxRendered="true" />、ここにあるように動作し始めました " <a4j:commandLink> Not Rerendering "

構成: MyFaces 2.1.10 (テンプレート化に使用される Facelets) および Richfaces 4.2.3。

これが役立つことを願っています。

于 2013-02-07T04:24:34.263 に答える
0

reRender は、フォーム外の任意のコンポーネントを指すこともできます。たとえば、これは機能します:

<h:form>
  <a4j:commandButton reRender="panel"/>
</h:form>

<h:panelGrid id="panel">
...
</h:panelGrid>
于 2010-08-16T22:30:51.730 に答える