1

f:ajax: を使用して再レンダリングする複合コンポーネントの子コンポーネントを指定する方法はありますか?

<f:ajax render="compositeComponent:childComponent" />

私の簡単な実験では、それらを参照することはできないようですが、これを達成するための代替戦略があるかどうか疑問に思いました。

4

1 に答える 1

1

それはうまくいくはずです。これは完全にクライアント側です (つまり、JSF によって生成された JavaScript コードによって HTML DOM ツリー内に配置されます)。

間違ったクライアント ID を参照した可能性があります。ウェブブラウザでページを開き、右クリックしてソースを表示し、生成された HTML 要素をページ ソースで見つけて、そのid属性を決定します。属性で指定するものは、それをrender絶対的に (接頭辞で) または相対的に (親コンポーネント:と比較して)参照する必要があります。UINamingContainer

もう 1 つの考えられる原因は、rendered評価されたまったく同じ複合コンポーネントの子に属性を配置したことです。falseこれにより、生成された HTML 要素が HTML DOM ツリーに完全に欠落しています。次に、次のようにrendered、代わりにそのコンポーネントの子に属性を配置します。

<h:panelGroup id="childComponent">
    <h:outputText value="#{bean.text}" rendered="#{bean.rendered}" />
</h:panelGroup>
于 2011-04-20T01:31:08.253 に答える