0

問題があり、rich:scrollableDataTable で再び再レンダリングすることになります。リスト内の項目を編集モードにする onrowclick 関数があります。

サンプルコードは次のとおりです。

                <a4j:outputPanel id="reviewerOP" ajaxRendered="true">           
                    <h:outputText id="to" value="#{_folder.reviewerName}">
                    </h:outputText>
                </a4j:outputPanel>          
                <h:selectOneMenu id="sridSO" value="#{folderBean.selectedReviewerId}" style="display: #{_folder.editmode == true ? 'block':'none'}">
                    <s:selectItems id="selectItes" value="#{folderBean.reviewersList}" var="_reviewer" label="#{_reviewer.userName}" itemValue="#{_reviewer.userId}"
                                   noSelectionLabel="--Select a Reviewer--"/>
                </h:selectOneMenu>
        </h:column>

私のテーブルの値は、@SessionScope を持つエンティティ リストを指しています。

ユーザーが編集ボタンをクリックすると、その特定の行のアイテムが編集モードになり、ドロップ メニューが有効になり、ユーザーはそのフォルダーのレビュー担当者を選択できるようになります。プロパティ editmode は、The Folder Entity の一時的なプロパティです。これまでのところ、ドロップダウンを正しくレンダリングし、選択したレビュアーを DB に保存できます。しかし、レビュアー名を再レンダリングすることに問題があります。場合によっては、完了ボタンがクリックされた後に再レンダリングされませんが、一部ではうまく機能します。

reviewName プロパティは @Formula を使用して別のテーブルから名前を取得しました。

私の質問は次のとおりです。 @Formula は、reRendering の遅延または問題を引き起こす entityList のスコープに何か関係がありましたか。

私は seam.2.2 richfaces 3.x を使用しています。およびjsf2.0

ありがとう :)

4

1 に答える 1

0

すでに問題を解決しました。

いくつかのログを使用して、エンティティ リストから返された結果リストでいくつかのテストを実行しようとしました。私のエンティティのプロパティがDBとリストで更新されていることがわかりました。ただし、数式を使用するプロパティは更新されません。したがってrefresh、 () メソッドは機能せず、 を使用して注釈が付けられたプロパティを再読み込みしません@Formula。したがって、私のクエリは@Formula休止状態によってキャッシュされ、エンティティ リストの結果リストへの 2 回目のアクセスでは再読み込みされないと思います。

私の解決策:

私が使用する解決策は、EntityManagerそのclear()方法を使用してクリアすることです。リストは正しく更新され、再レンダリングは完全に機能します。

-乾杯

于 2011-12-28T01:02:15.183 に答える