web-dev-qa-db-ja.com

JSFバッキングBeanメソッドからJSFコンポーネントを更新できますか?

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

93
BestPractices

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

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

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

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

PrimeFaces 6.2からRequestContext#update()は非推奨になりました。代わりに PrimeFaces::Ajax#update を使用してください。

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

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

Ajax.update("foo:bar");

方法に関係なく、これらのクライアントIDは、notのように接頭辞NamingContainerの区切り文字が付いた絶対クライアントIDを表す必要があることに注意してくださいビュー側から行います。

167
BalusC

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

UIコンポーネントを操作した後、以下を実行する必要があります。

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

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

9

RequestContextdeprecatedfrom Primefaces 6.2。このバージョンから次を使用します。

if (componentID != null && PrimeFaces.current().isAjaxRequest()) {
    PrimeFaces.current().ajax().update(componentID);
}

Backbeanからjavascriptを実行するには、次の方法を使用します。

PrimeFaces.current().executeScript(jsCommand);

参照:

7
ℛɑƒæĿ