我正在开发一个接缝JSFV1.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>

...

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

提前谢谢了。巴里斯

有帮助吗?

解决方案 2

在Scroller之间添加A4J支持标签已经解决了我的问题:

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

但是,另一件事是,我正在使用jQuery来对我的表格进行样式(ex。在鼠标上和外出),这一次,当我单击表的下一页时,样式就消失了。

任何帮助都会很棒,非常感谢。

** PS:顺便说一句,我想到的是,我不可能自己找到解决此类问题的解决方案。我的创建可能并不总是足以解决(至少在我的示例中,添加A4J:支持事物)我正在问专家,我们如何自己处理这些事情... **

其他提示

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

您不需要jQuery来造型数据表

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

您看到的问题是由于Ajax的性质以及桌子的恢复方式。

假设您是根据某种形式的页面on载来触发初始样式调用,则第一次渲染页面,将应用您的样式。但是,当您使用Paginator单击“下一个”按钮时,您会向下拉很多新的HTML,并使用更新的更新信息替换桌子中的旧HTML。您正在看到的过程是您看到了样式,因为jQuery将样式应用于 老的 节点,在rerender上,这些节点被完全抛弃,并与它们的样式一起丢弃。您只需要找出钩子来调用“样式”方法,然后重新渲染表之后的调用。

通常,我使用A4J:状态标签,并设置OnStart或OnStop来重新放置表。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top