2013-05-16 36 views
1
<rich:extendedDataTable sortMode="single" width="700px" value="#{gpsReport.reportSummary}" 
               enableContextMenu="true" var="gps" 
               selectionMode="single" 
               rowClasses="tableRow1, tableRow2" 
               id="tbl_gps" height="301px" rows="#{gpsReport.rowCount}" rowKeyVar="row"> 

          <rich:column label="User" style="text-align: center" width="100px" > 

           <f:facet name="header"> 
            <h:outputText value="User" /> 
           </f:facet> 
           <h:outputText value="#{gps.currentUser}" /> 

          </rich:column> 

          <rich:column label="Time Stamp" style="text-align: center" width="140px" > 

           <f:facet name="header"> 
            <h:outputText value="Time Stamp" /> 
           </f:facet> 
           <h:outputText value="#{gps.modifiedDate}" /> 

          </rich:column> 

          <rich:column label="Latitude" style="text-align: center" width="110px" > 

           <f:facet name="header"> 
            <h:outputText value="Latitude" /> 
           </f:facet> 
           <h:outputText value="#{gps.latitude}" /> 

          </rich:column> 

          <rich:column label="Longitude" style="text-align: center" width="110px" > 

           <f:facet name="header"> 
            <h:outputText value="Longitude" /> 
           </f:facet> 
           <h:outputText value="#{gps.longitude}" /> 

          </rich:column> 

          <rich:column label="Location" style="text-align: center" width="240px" > 

           <f:facet name="header"> 
            <h:outputText value="Location" /> 
           </f:facet> 
           <h:outputText value="#{gps.location}" /> 

          </rich:column> 

         </rich:extendedDataTable> 

         <rich:datascroller align="center" for="tbl_gps" /> 

为什么此代码不起作用?我错过了什么吗?这与我在其他页面上使用的实现完全相同,实际上它工作正常。但这次没有运气。扩展数据表和DataScroller

+0

JSF和RF的哪个版本?托管bean的范围是什么? –

+0

RF 3.3.3和JSF 1.2 –

+1

而你的托管bean的范围是... –

回答

3

问题是每次创建托管bean时都会重新填充列表内容。由于托管bean有一个请求范围,它将在每个操作(包括ajax操作)上创建。请参考How to choose the right bean scope?和那里提供的链接,它解释了托管bean的范围,并提供了很好的示例。

由于您使用的是JSF 1.2,因此无法使用视图范围。相反,要解决此问题,您有两种方法:

  1. 将托管bean的范围更改为会话范围。它将解决您的问题但是托管的bean将一直存在,直到用户会话过期,而不是一个很好的解决方案。

  2. 在请求范围内维护您的托管bean,并使用RichFaces 3.3和@KeepAlive注释的强大功能。当用户仍处于同一视图中时,此注释将使您的请求处于活动状态(与查看范围非常相似)。它的用法很简单:

    @KeepAlive 
    public class GpsReport { 
        //managed bean definition... 
    } 
    
+0

你好Luiggi,谢谢你花时间。我正在按照你的建议开展工作。我会在稍后通知。再次感谢。 –