108

JSFバッキングBeanでページ上のコンポーネントを更新する方法はありますか?ページ上のコンポーネントを更新するためにupdate属性を持つajaxコンポーネントを使用することを考えていません。JSFバッキングBeanメソッド内から更新をトリガーする必要があります。ページの更新は、このメソッドが完了した後、または完了する前に発生する可能性があることに注意してください。PrimeFacesを使用することで得られる解決策がある場合は、PrimeFacesを使用しています。

4

5 に答える 5

203

標準のJSFAPIを使用して、クライアントIDをに追加しますPartialViewContext#getRenderIds()

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add("foo:bar");

PrimeFaces固有のAPIを使用して、を使用しますPrimeFaces.Ajax#update()

PrimeFaces.current().ajax().update("foo:bar");

または、PrimeFaces 6.2以降をまだ使用していない場合は、を使用してくださいRequestContext#update()

RequestContext.getCurrentInstance().update("foo:bar");

JSFユーティリティライブラリOmniFacesを使用する場合は、を使用してAjax#update()ください。

Ajax.update("foo:bar");

方法に関係なく、これらのクライアントIDは、ビュー側から行う場合のように、区切り文字がプレフィックスとして付けられていない絶対クライアントIDを表す必要があることに注意してください。NamingContainer

于 2012-07-06T17:51:42.740 に答える
10

また、jsf バッキング Bean/クラスからコンポーネントを更新しようとしました

UI コンポーネントを操作した後、次の操作を行う必要があります。

FacesContext.getCurrentInstance().getPartialViewContext().getRenderIds().add(componentToBeRerendered.getClientId())

(サーバー側の) componentId の代わりに clientId を使用することが重要です!!

于 2015-07-02T10:48:39.077 に答える