2013-08-08 2 views
0

Я не уверен, почему это происходит, и я никогда не сталкивался с этим раньше. В приложении, над которым я работаю, я использую a для отображения определенных данных о путешествиях. Пользователь выбирает определенную информацию о поездке (от/до/даты и т. Д.), А затем, при нажатии на поиск, dataTable загружается с результатами.Paginated Primefaces dataTable не учитывает первый результат при начальной загрузке

Проблема: когда загружается dataTable, кажется, что она не учитывает 1 (или более) результатов. При обновлении страницы на этот раз отображается какой-то недостающий результат, как видно из изменения размера таблицы. Однако нажатие на кнопку «Экспорт в Excel» под таблицей (встроенной из PF) уже показывает эту недостающую строку с обновлением или без нее. Это, по-видимому, указывает на то, что это может быть какой-то вопрос пользовательского интерфейса?

Любая помощь приветствуется, спасибо! Кроме того, дайте мне знать, если вам нужны дополнительные данные.

Санджив

EDIT: Код для primefaces DataTable ниже:

<p:dataTable 
     id="#{viewName}Table" 
     value="#{resultsBean.legs}"   
     var="leg" 
     paginator="true" 
     rows="20"> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       Traveler Name 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.trip.lastName}, #{leg.trip.firstName}"/> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       Email Address 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.trip.email}"/> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       Mobile Phone 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.trip.mobilePhoneNumber}"/> 
     </p:column>    
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       PNR Locator 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.trip.recordLocator}"/> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       Travel Type 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.type}"/> 
     </p:column>    
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       Departure/Check-In Date 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.fromDate}"> 
       <f:convertDateTime pattern="dd-MMM-yyyy HH:mm"/> 
      </h:outputText> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       Arrival/Check-Out Date 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.toDate}"> 
       <f:convertDateTime pattern="dd-MMM-yyyy HH:mm"/> 
      </h:outputText> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       From Location 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.fromLocation.id == 0 ? '' : leg.fromLocation.locationName}"/> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       To Location 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.toLocation.id == 0 ? '' : leg.toLocation.locationName}"/> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       From Code 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.fromCode}"/> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       To Code 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.toCode}"/> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       Airline/Hotel Name 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.carrierName}"/> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       Flight/Rail # 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.carrierVehicleCode}"/> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       CMC 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.trip.cmc.name}"/> 
     </p:column> 
     <p:column style="white-space: normal"> 
      <f:facet name="header"> 
       Booking Country 
      </f:facet> 
      <h:outputText style="white-space: nowrap" value="#{leg.trip.cmc.location.locationName}"/> 
     </p:column> 
    </p:dataTable> 

Похоже, по какой-то причине, только первый результат становится отрезан. Если на столе есть только одна страница, то обновление экрана покажет отсутствующий результат. Если есть несколько страниц, то переход на следующую страницу и возвращение на первую страницу тоже поможет.

+0

Может быть объем выпуска. – nsumer

+1

Просьба указать ваш код –

+0

Код указан выше, спасибо. – user2284708

ответ

0

В итоге я столкнулся с этой проблемой. Я до сих пор не знаю, почему это странное поведение происходит, но мое решение состояло в том, чтобы обновить/сбросить значение dataTable через Java после загрузки страницы. Следующий код закончил работать:

final DataTable d = (DataTable)FacesContext.getCurrentInstance().getViewRoot().findComponent("ResultsTable"); 

d.reset(); 

В принципе, так как обновление экрана или переход к следующей странице в DataTable в конечном итоге показывает отсутствующий результат, я понял, заставляя сброс на стороне сервера будет в конечном итоге фиксаций вопрос. Похоже, сработало!

Sanjeev

Смежные вопросы