1

我正在开发一个 Seam-Jsfv1.2-EJB3 网络应用程序。我在每一行都有一个数据表和复选框。此外,我的表格底部还有一个数据滚动条。

我的问题是当我从滚动条中单击下一个页码时,数据表第一页上的选中复选框消失了。我的意思是,即使它们被选中,单击下一页也会使它们被取消选中。我通过单击滚动条再次返回第一页来查看它。

你对这个问题有什么想法吗?为了澄清我的情况,我在下面附上了我的代码:

<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>

但是另一件事是,我正在使用 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

您不需要 jQuery 来设置数据表的样式

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

您在删除样式时看到的问题是由于 AJAX 的性质以及重新呈现表格的方式。

假设您基于某种形式的页面 onLoad 触发初始样式调用,第一次呈现页面时,将应用您的样式。但是,当您使用分页器单击“下一步”按钮时,您将拉下许多新的 HTML,并用更新的更新信息替换表中的旧 HTML。您看到的问题是您看到了样式,因为 jQuery 将样式应用于节点,在重新渲染时,这些节点连同它们的样式一起被完全丢弃。您只需要找出调用“样式”方法的钩子,并在重新渲染表后重新执行该调用。

通常,我使用 a4j:status 标记,并设置 onstart 或 onstop 以重新解析表。

于 2011-11-20T03:57:27.887 回答