将多个dataTable与dataScroller配合使用都会导致dataScroller故障 [英] Usage of multiple dataTables with a dataScroller each leads to dataScroller malfunction

查看:95
本文介绍了将多个dataTable与dataScroller配合使用都会导致dataScroller故障的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个包含三个dataTables的JSF页面.它们每个都有一个关联的dataScroller. 查看页面时,仅最后一个dataScroller(在底部)有效.其他人仅在自己的dataScroller中选择任何页面时才加载在最后一个dataTable上选择的页面.

I have a JSF page with three dataTables. Each of them has an associated dataScroller. When viewing the page only the last dataScroller (on the bottom) works. The others only load the page selected on the last dataTable when selecting any page in their own dataScroller.

我已经用Firebug调试了页面,但没有发现任何相关内容.在这里或其他论坛中,我都没有找到任何有关如何解决此问题的线索.

I've debugged the page with Firebug and I found nothing relevant. Neither did I find any thread here or in other forums about how to solve this issue.

我还发布了一些代码,以防万一.预先感谢:

I post also some code, just in case it could be helpful. Thanks in advance:

homepage.xhtml

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:c="http://java.sun.com/jstl/core">

<ui:composition template="layouts/template.jsf">
    <ui:define name="body">
        <h3>#{msg.homepageCaption1}</h3>
        <h:form id="form">
            <div>
                <rich:dataTable value="#{HomepageBean.firstTable}"
                    var="tOne" id="tableOne" rows="5">
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.firstColumn}" />
                        </f:facet>
                        <h:outputText value="#{tOne.firstColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.secondColumn}" />
                        </f:facet>
                        <h:outputText value="#{tOne.secondColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.thirdColumn}" />
                        </f:facet>
                        <h:outputText value="This is an String" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fourthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tOne.fourthColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fifthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tOne.fifthColumn}" />
                    </rich:column>
                </rich:dataTable>
                <rich:dataScroller for="tableOne"
                    pageIndexVar="#{HomepageBean.firstTablePage}"
                     ajaxSingle="false">
                    <f:facet name="previous">
                        <h:outputText value="&lt;" />
                    </f:facet>
                    <f:facet name="next">
                        <h:outputText value="&gt;" />
                    </f:facet>
                    <f:facet name="fastrewind">
                        <h:outputText value="&lt;&lt;" />
                    </f:facet>
                    <f:facet name="fastforward">
                        <h:outputText value="&gt;&gt;" />
                    </f:facet>
                </rich:dataScroller>
            </div>
            <div>
                <h3>#{msg.homepageCaption2}</h3>
                <rich:dataTable
                    value="#{HomepageBean.secondTable}" var="tTwo"
                    id="tableTwo" rows="5">
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.firstColumn}" />
                        </f:facet>
                        <h:outputText value="#{tTwo.firstColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.secondColumn}" />
                        </f:facet>
                        <h:outputText value="#{tTwo.secondColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.thirdColumn}" />
                        </f:facet>
                        <h:outputText value="This is an string" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fourthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tTwo.fourthColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fifthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tTwo.fifthColumn}" />
                    </rich:column>
                </rich:dataTable>
                <rich:dataScroller for="tableTwo"
                    pageIndexVar="#{HomepageBean.secondTablePage}"
                    ajaxSingle="false">
                    <f:facet name="previous">
                        <h:outputText value="&lt;" />
                    </f:facet>
                    <f:facet name="next">
                        <h:outputText value="&gt;" />
                    </f:facet>
                    <f:facet name="fastrewind">
                        <h:outputText value="&lt;&lt;" />
                    </f:facet>
                    <f:facet name="fastforward">
                        <h:outputText value="&gt;&gt;" />
                    </f:facet>
                </rich:dataScroller>
            </div>
            <div>
                <h3>#{msg.homepageCaption3}</h3>
                <rich:dataTable
                    value="#{homepageBean.thirdTable}" var="tThree"
                    id="tableThree" rows="5">
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.firstColumn}" />
                        </f:facet>
                        <h:outputText value="#{tThree.firstColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.secondColumn}" />
                        </f:facet>
                        <h:outputText value="#{tThree.secondColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.thirdColumn}" />
                        </f:facet>
                        <h:outputText value="This is an string" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fourthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tThree.fourthColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fifthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tThree.fifthColumn}" />
                    </rich:column>
                </rich:dataTable>
                <rich:dataScroller for="tableThree"
                    pageIndexVar="#{homepageBean.thirdTablePage}"
                    ajaxSingle="false">
                    <f:facet name="previous">
                        <h:outputText value="&lt;" />
                    </f:facet>
                    <f:facet name="next">
                        <h:outputText value="&gt;" />
                    </f:facet>
                    <f:facet name="fastrewind">
                        <h:outputText value="&lt;&lt;" />
                    </f:facet>
                    <f:facet name="fastforward">
                        <h:outputText value="&gt;&gt;" />
                    </f:facet>
                </rich:dataScroller>
            </div>
        </h:form>
    </ui:define>
</ui:composition>
</html>

homepageBean.java

package somepackage.bean;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Component;

import somepackage.service.HomepageService;
import somepackage.viewdto.ViewDTO;

@Component("HomepageBean")
@Scope("request")
public class HomepageBean {

    private List<ViewDTO> firstTable;
    private List<ViewDTO> secondTable;
    private List<ViewDTO> thirdTable;
    private int firstTablePage;
    private int secondTablePage;
    private int thirdTablePage;
    @Autowired
    private HomepageService homepageService;


    public List<ViewDTO> getFirstTable() {
        return firstTable;
    }
    public void setFirstTable(List<ViewDTO> firstTable) {
        this.firstTable = firstTable;
    }
    public List<ViewDTO> getSecondTable() {
        return secondTable;
    }
    public void setSecondTable(List<ViewDTO> secondTable) {
        this.secondTable = secondTable;
    }
    public List<ViewDTO> getThirdTable() {
        return thirdTable;
    }
    public void setThirdTable(List<ViewDTO> thirdTable) {
        this.thirdTable = thirdTable;
    }
    public int getFirstTablePage() {
        return firstTablePage;
    }
    public void setFirstTablePage(int firstTablePage) {
        this.firstTablePage = firstTablePage;
    }
    public int getSecondTablePage() {
        return secondTablePage;
    }
    public void setSecondTablePage(int secondTablePage) {
        this.secondTablePage = secondTablePage;
    }
    public int getThirdTablePage() {
        return thirdTablePage;
    }
    public void setThirdTablePage(int thirdTablePage) {
        this.thirdTablePage = thirdTablePage;
    }
    public HomepageService getHomepageService() {
        return homepageService;
    }
    public void setHomepageService(HomepageService homepageService) {
        this.homepageService = homepageService;
    }

}

推荐答案

已解决了将每个表嵌套在panelGrid中的问题(不知道这是否应该是严格正确的方法,但确实可行):

The issue was solved nesting each table inside a panelGrid (no idea whether this should be the strictly correct approach but it worked):

<?xml version="1.0" encoding="ISO-8859-1" standalone="yes" ?>
<html xmlns="http://www.w3.org/1999/xhtml"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:c="http://java.sun.com/jstl/core">

<ui:composition template="layouts/template.jsf">
    <ui:define name="body">
        <h3>#{msg.homepageCaption1}</h3>
        <h:form id="form">
            <h:panelGrid columnClasses="acent">
                <rich:dataTable value="#{HomepageBean.firstTable}"
                    var="tOne" id="tableOne" rows="5">
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.firstColumn}" />
                        </f:facet>
                        <h:outputText value="#{tOne.firstColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.secondColumn}" />
                        </f:facet>
                        <h:outputText value="#{tOne.secondColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.thirdColumn}" />
                        </f:facet>
                        <h:outputText value="This is an String" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fourthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tOne.fourthColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fifthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tOne.fifthColumn}" />
                    </rich:column>
                </rich:dataTable>
                <rich:dataScroller for="tableOne"
                    pageIndexVar="#{HomepageBean.firstTablePage}"
                     ajaxSingle="false">
                    <f:facet name="previous">
                        <h:outputText value="&lt;" />
                    </f:facet>
                    <f:facet name="next">
                        <h:outputText value="&gt;" />
                    </f:facet>
                    <f:facet name="fastrewind">
                        <h:outputText value="&lt;&lt;" />
                    </f:facet>
                    <f:facet name="fastforward">
                        <h:outputText value="&gt;&gt;" />
                    </f:facet>
                </rich:dataScroller>
            </h:panelGrid>
            <h:panelGrid columnClasses="acent">
                <h3>#{msg.homepageCaption2}</h3>
                <rich:dataTable
                    value="#{HomepageBean.secondTable}" var="tTwo"
                    id="tableTwo" rows="5">
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.firstColumn}" />
                        </f:facet>
                        <h:outputText value="#{tTwo.firstColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.secondColumn}" />
                        </f:facet>
                        <h:outputText value="#{tTwo.secondColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.thirdColumn}" />
                        </f:facet>
                        <h:outputText value="This is an string" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fourthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tTwo.fourthColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fifthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tTwo.fifthColumn}" />
                    </rich:column>
                </rich:dataTable>
                <rich:dataScroller for="tableTwo"
                    pageIndexVar="#{HomepageBean.secondTablePage}"
                    ajaxSingle="false">
                    <f:facet name="previous">
                        <h:outputText value="&lt;" />
                    </f:facet>
                    <f:facet name="next">
                        <h:outputText value="&gt;" />
                    </f:facet>
                    <f:facet name="fastrewind">
                        <h:outputText value="&lt;&lt;" />
                    </f:facet>
                    <f:facet name="fastforward">
                        <h:outputText value="&gt;&gt;" />
                    </f:facet>
                </rich:dataScroller>
            </h:panelGrid>
            <h:panelGrid columnClasses="acent">
                <h3>#{msg.homepageCaption3}</h3>
                <rich:dataTable
                    value="#{homepageBean.thirdTable}" var="tThree"
                    id="tableThree" rows="5">
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.firstColumn}" />
                        </f:facet>
                        <h:outputText value="#{tThree.firstColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.secondColumn}" />
                        </f:facet>
                        <h:outputText value="#{tThree.secondColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.thirdColumn}" />
                        </f:facet>
                        <h:outputText value="This is an string" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fourthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tThree.fourthColumn}" />
                    </rich:column>
                    <rich:column>
                        <f:facet name="header">
                            <h:outputText value="#{msg.fifthColumn}" />
                        </f:facet>
                        <h:outputText value="#{tThree.fifthColumn}" />
                    </rich:column>
                </rich:dataTable>
                <rich:dataScroller for="tableThree"
                    pageIndexVar="#{homepageBean.thirdTablePage}"
                    ajaxSingle="false">
                    <f:facet name="previous">
                        <h:outputText value="&lt;" />
                    </f:facet>
                    <f:facet name="next">
                        <h:outputText value="&gt;" />
                    </f:facet>
                    <f:facet name="fastrewind">
                        <h:outputText value="&lt;&lt;" />
                    </f:facet>
                    <f:facet name="fastforward">
                        <h:outputText value="&gt;&gt;" />
                    </f:facet>
                </rich:dataScroller>
            </h:panelGrid>
        </h:form>
    </ui:define>
</ui:composition>
</html>

这篇关于将多个dataTable与dataScroller配合使用都会导致dataScroller故障的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆