1

私は PrimeFaces JSF ライブラリを使用しており、各ノードがチェックボックスになっているツリーがあります。

<p:tree selectionMode="checkbox"...>

このツリーはいくつかのファイルを表し、ファイル/ノードを追加または削除できるため、5 秒ごとに動的に更新 (ポーリング) されます。

<p:poll interval="5" update="treeId"... />

ユーザーは、ツリー ノードのチェックボックスを介してファイルを選択できます。選択したノードは TreeNode の配列に保存されます。

<p:tree selection="#{BackingBean.selectedNodes}"...>

selectedNodes は次のように定義されます。

private TreeNode[] selectedNodes;

問題は、ツリーが常に (5 秒ごとに) 更新されているため、ツリーの状態が失われることです! ユーザーがチェックしたものは、再びチェックが外れます。

5 秒の更新の間にツリーの状態を記憶しておくにはどうすればよいですか?

4

1 に答える 1

1

JSF 2 を使用している場合:

バッキング Bean を作成します@ViewScoped

@ManagedBean
@ViewScoped
public class BackingBean {
    ...
}

JSF 1.2 を使用している場合:

Richfaces のコンポーネントa4j:keepAliveを使用します。

<a4j:keepAlive bean="BackingBean" />

トマホークの saveState (プロジェクトに適したトマホークのバージョン) を使用して、selectedNodes のみをビューに配置するオプションもあります。

<t:saveState value="#{BackingBean.selectedNodes}" />

Tomahawk とその依存関係を に配置しWEB-INF/lib、フィルターを web.xml に登録し、名前空間を.xhtmlページに登録するだけで準備完了です。

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