2014-01-27 15 views
1

我有一個JSF頁面和三個dataTables。他們每個人都有一個關聯的dataScroller。 查看頁面時,只有最後一個dataScroller(在底部)起作用。其他人只在自己的dataScroller中選擇任何頁面時才加載在最後一個dataTable上選擇的頁面。多個dataTables與dataScroller的使用每個導致dataScroller發生故障

我已經用Firebug調試過這個頁面,並且我沒有發現任何相關的信息。我也沒有在這裏或其他論壇找到關於如何解決這個問題的任何線索。

我也發佈了一些代碼,以防萬一它有幫助。在此先感謝:

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

} 
+0

嘗試簡單版本的datascroller:''並將HomepageBean的範圍更改爲會話 –

+0

我已經試過了,Vasil。它沒有工作。無論如何感謝您的建議:) – jplatasv

回答

2

的問題得到了解決嵌套一個panelGrid的內部的每個表(不知道這是否應該是嚴格正確的做法,但它的工作):

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