1

Seam-Jsfv1.2-EJB3Webアプリを開発しています。各行にデータテーブルとチェックボックスがあります。さらに、テーブルの下部にもデータスクローラーがあります。

私の問題は、スクローラーから次のページ番号をクリックすると、データテーブルの最初のページで選択されたチェックボックスが消えることです。つまり、選択されていても、次のページをクリックすると選択が解除されます。スクローラーをクリックして最初のページに戻ると表示されます。

その問題について何か考えがありますか?私のケースを明確にするために、以下にコードを添付しました。

<rich:dataTable
            id="apiV2ProductList" rows="10" var="_apiV2Product"
            value="#{apiV2ProductList.resultList}"
            rendered="#{not empty apiV2ProductList.resultList}" reRender="ds">
            <rich:column>
                <f:facet name="header"> 
                    <h:selectBooleanCheckbox id="selectionCheckAll" onclick="selectAll()" /> 
                </f:facet>
                <h:selectBooleanCheckbox id="selectionCheck" onclick="increase(this)" value="#{_apiV2Product.selectValue}" >  
                </h:selectBooleanCheckbox>
            </rich:column>

..。

<f:facet name="footer">
                <rich:datascroller id="ds" renderIfSinglePage="false">
                </rich:datascroller>
            </f:facet>

よろしくお願いします。バリス

4

4 に答える 4

2

スクローラーの間にa4jサポートタグを追加すると、私の問題は解決しました。

<f:facet name="footer">
  <rich:datascroller id="ds" renderIfSinglePage="false">
   <a4j:support event="onpagechange"/> 
  </rich:datascroller>
</f:facet>

ただし、もう1つは、JQueryを使用してテーブルのスタイルを設定していることです(たとえば、マウスオーバーとアウト)。今回は、テーブルの次のページをクリックすると、スタイルが消えます。

どんな助けでも素晴らしいでしょう、事前に感謝します。

** PS:ところで、私の頭の中で最も奇妙なことは、この種の問題の解決策を自分で見つけることが不可能になるということです。あなたの作成は必ずしも解決するのに十分ではないかもしれません(少なくともここで私の例では、a4j:supportのものを追加します)私は専門家に尋ねています、どうすればそのようなことを自分で処理できますか... **

于 2010-05-27T08:23:57.330 に答える
2

org.richfaces.renderkit.html.DatascrollerTemplate 以下の構成のコンポーネントをfaces-config.xmlに追加することにより、独自のスタイリング用に独自のDataScrollerの書き込みを拡張できます。

<component>
    <component-type>exCustHtmlDatascroller</component-type>
    <component-lass>org.jsf.common.ui.EXCustHtmlDatascroller</component-class>
</component>
<render-kit>
  <renderer>
      <component-family>org.richfaces.Datascroller</component-family>
      <renderer-type>exCustDataScrollerTemplate</renderer-type>
      <renderer- class>org.jsf.common.ui.EXCustDataScrollerTemplate</renderer-class>
  </renderer>
</render-kit>
于 2011-10-27T15:46:28.030 に答える
1

スタイルが削除されたときに発生した問題は、AJAX の性質と、テーブルが再レンダリングされる方法に起因します。

なんらかの形式のページ onLoad に基づいて最初のスタイリング呼び出しを実行したと仮定すると、ページが初めてレンダリングされるときに、スタイルが適用されます。ただし、ページネーターで「次へ」ボタンをクリックすると、多くの新しい HTML が表示され、テーブル内の古い HTML が新しい更新された情報に置き換えられます。あなたが見ている問題は、jQuery が古いノードにスタイルを適用したため、スタイリングを見たことです。「スタイリング」メソッドを呼び出すためのフックを見つけ出し、テーブルが再レンダリングされた後にその呼び出しを再実行するだけです。

通常、a4j:status タグを使用し、onstart または onstop を設定してテーブルを再解析します。

于 2011-11-20T03:57:27.887 に答える
1

データテーブルのスタイリングにjQueryは必要ありません

<rich:dataTable id="dataTable" var="x"  
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
于 2010-08-03T16:26:00.033 に答える