我正在开发一个Seam-Jsfv1.2-EJB3 Web应用程序。 我在每一行都有一个数据表和复选框。而且,我的桌子底部也有一个数据循环器。
我的问题是当我从滚动条单击下一页编号时,数据表第一页上的所选复选框消失了。我的意思是,即使他们被选中,点击下一页也会取消选中。我通过单击滚动条再次返回第一页来看到它。
你对这个问题有什么看法吗? 为了澄清我的情况,我附上了以下代码:
<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>
非常感谢提前。 巴里斯
答案 0 :(得分:2)
在滚动条之间添加a4j支持标记解决了我的问题:
<f:facet name="footer">
<rich:datascroller id="ds" renderIfSinglePage="false">
<a4j:support event="onpagechange"/>
</rich:datascroller>
</f:facet>
然而另一件事是,我正在使用JQuery来设置我的表格(例如鼠标上下),这次,当我点击表格的下一页时,样式就消失了。
任何帮助都会很棒,非常感谢提前。
** PS:BTW我想到的是,我不可能为这类问题找到解决方案。你的创作可能并不总是足以解决(至少在我的例子中,添加a4j:支持的东西)我问专家,我们怎么能自己处理这类事情...... **
答案 1 :(得分: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>
答案 2 :(得分:1)
您不需要jQuery来设置数据表的样式
<rich:dataTable id="dataTable" var="x"
onRowMouseOver="this.style.backgroundColor='#F1F1F1'"
onRowMouseOut="this.style.backgroundColor='#{a4jSkin.tableBackgroundColor}'"
答案 3 :(得分:1)
您所看到的删除样式的问题是由于AJAX的性质以及表重新生成的方式。
假设您正在基于某种形式的页面onLoad触发初始样式调用,则第一次呈现页面时,将应用您的样式。但是,当您单击带有分页器的“下一步”按钮时,您将删除大量新HTML,并使用更新,更新的信息替换表中的旧HTML。您看到的问题是您看到样式,因为jQuery将样式应用于旧节点,在reRender上,这些节点以及它们的样式完全被丢弃。您只需要找出钩子来调用“样式”方法,并在重新呈现表后重新执行该调用。
通常,我使用a4j:status标记,并设置onstart或onstop以重新解析表。