Jsf <;rich:datatable>;及<;rich:datascroller>;问题

Jsf <;rich:datatable>;及<;rich:datascroller>;问题,jsf,datatable,richfaces,datascroller,Jsf,Datatable,Richfaces,Datascroller,我正在开发一个Seam-JSV1.2-EJB3 web应用程序。 我有一个数据表和每行的复选框。此外,我的桌子底部还有一个datascroller 我的问题是,当我从滚动条中单击下一个页码时,datatable第一页的选中复选框消失了。我的意思是,即使它们被选中,单击下一页也会使它们被取消选中。我通过单击滚动条再次返回到第一页来查看它 你知道那个问题吗? 为了澄清我的案例,我在下面附上了我的代码: <rich:dataTable id="apiV2ProductLi

我正在开发一个Seam-JSV1.2-EJB3 web应用程序。 我有一个数据表和每行的复选框。此外,我的桌子底部还有一个datascroller

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

你知道那个问题吗? 为了澄清我的案例,我在下面附上了我的代码:

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


非常感谢。
Baris在scroller之间添加a4j支持标签解决了我的问题:

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

然而,另一件事是,我正在使用JQuery来设置我的表的样式(例如,鼠标悬停),而这一次,当我单击表的下一页时,样式就消失了

任何帮助都将是巨大的,非常感谢提前

** 顺便说一句,我最担心的是,我自己不可能找到解决这类问题的办法。你的创造可能并不总是足以解决问题(至少在我的例子中,加上a4j:支持的东西)我在问专家,我们如何自己处理这类事情。。。
**

在scroller之间添加a4j支持标签解决了我的问题:

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

然而,另一件事是,我正在使用JQuery来设置我的表的样式(例如,鼠标悬停),而这一次,当我单击表的下一页时,样式就消失了

任何帮助都将是巨大的,非常感谢提前

** 顺便说一句,我最担心的是,我自己不可能找到解决这类问题的办法。你的创造可能并不总是足以解决问题(至少在我的例子中,加上a4j:支持的东西)我在问专家,我们如何自己处理这类事情。。。
**

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

<rich:dataTable id="dataTable" var="x"  
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"

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

<rich:dataTable id="dataTable" var="x"  
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"

您可以扩展
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>

exCustHtmlDatascroller
org.jsf.common.ui.EXCustHtmlDatascroller
org.richfaces.Datascroller
exCustDataScrollerTemplate
org.jsf.common.ui.EXCustDataScrollerTemplate

您可以扩展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>

exCustHtmlDatascroller
org.jsf.common.ui.EXCustHtmlDatascroller
org.richfaces.Datascroller
exCustDataScrollerTemplate
org.jsf.common.ui.EXCustDataScrollerTemplate

您在删除样式时看到的问题是由于AJAX的性质以及表的重新排序方式造成的

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


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

您看到的删除样式的问题是由于AJAX的性质以及重新提交表的方式

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


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

是的,这也是正确的。谢谢你提供了另一种款式。是的,它也是正确的。谢谢你为我提供了另一种风格。谢谢,你的回答为我节省了很多时间。谢谢,你的回答为我节省了很多时间