0

動的テーブルレンダリングを考慮した記事(BalusCに感謝)に触発されて、私はついに、少し前にここで望んでいた正確な結果を得ることができました。ビジネスロジックの要件を尊重してすべての列の動作を制御できたので、これは非常に完璧な結果をもたらしました。しかし、そのテーブルが動的バインディング実験を行っていた実験的な「静的」ページの一部である場合、それはかなりクールでした。

アイデアを既存のコードにマージする必要があると(動的式について何も知らないのは多かれ少なかれ愚かです)、次の問題に直面します。動的バインディングはページの読み込み中に1回だけ機能するようです。わかりました。動的バインディングBeanと「メイン」ページBean(ユーザーがツリーノードをクリックするなどのユーザーアクションを制御する)を分離することができなかったと思いました。

私の現在のページピースの簡略化されたインスタンスは次のとおりです(左側にツリーがあり、ツリーノードをクリックすると、まったく別のデータテーブル[PrimeFaces使用]を取得する必要があると考えてください):

ツリー、テーブルセレクター(かなり完璧に機能します)

<p:tree value="#{tableViewsPageBean.root}" var="node" dynamic="true" cache="false"
        selectionMode="single" selection="#{tableViewsPageBean.selectedNode}">
    <p:ajax event="select" listener="#{tableViewsPageBean.onNodeSelect}" update=":form:scene"/>
    <p:treeNode id="treeNode">
        <h:outputText value="#{node}"/>
    </p:treeNode>
</p:tree>

ユーザーが上のツリーノードをクリックすると動的にレンダリングされるように意図されたテーブル

<h:panelGroup id="scene">
    ...
    <h:panelGroup binding="#{dynamicDataTableBean.dataTableGroup}"/>
</h:panelGroup>

はBeantableViewsPageBeanとして定義され、はBeanです(これが役立つとは思わないでください。アイデアがありました)。@ViewScopeddynamicDataTableBean@RequestScoped

しかし、私にとって、次のコードはページの読み込み中に1回だけ要求されます。

public HtmlPanelGroup getDataTableGroup() { ... }

わかりませんが、このコードを実行して、ページをリロードせずに、上記のパネルグループのコンポーネントを強制的に再バインドすることはできますか?前もって感謝します。

4

1 に答える 1

1

すみません、悪いです。私は私の中に次のものを持っていましたweb.xml

<context-param>
    <param-name>javax.faces.PARTIAL_STATE_SAVING</param-name>
    <param-value>false</param-value>
</context-param>

そのオプションはに設定する必要がありますtrue。しかし、それでも私はここで説明されている問題を抱えています。

于 2012-05-02T10:56:24.183 に答える