2011-02-09 2 views
0

Я отображения нескольких p:datatable «S через ui:repeat, следующий фрагмент кода иллюстрирует то, что я делаю:УИ: повтор + р: DataTable вопрос

<ui:repeat id="searchTables" 
    value="#{searchBean.mapKeys}" 
    var="mapKeys"> 
     <p:dataTable id="recordTable" 
      value="#{searchBean.resultMap[mapKeys].resultList}" 
      var="recordTable" 
      paginator="true" 
      rows="10"> 
       <f:facet name="header"> 
         <h:outputText value="#{searchBean.resultMap[mapKeys].name}"/> 
       </f:facet> 
        <p:columns value="#{searchBean.resultMap[mapKeys].resultColumns}" 
           var="column" 
           columnIndexVar="colIndex"> 
         <f:facet name="header"> 
          <p:outputPanel> 
           #{column.header} 
          </p:outputPanel> 
         </f:facet> 
         <h:outputText value="#{recordTable[column.property]}"/><br/> 
        </p:columns> 
     </p:dataTable> 
</ui:repeat> 

мне нужно каждый отдельный DataTable, чтобы иметь свой собственный Paginator, однако при на моей странице отображается только первый datatable, который получает страницу, и этот paginator контролирует все остальные отображаемые страницы DataTables.

Спасибо за внимание!

ответ

3

Единственным способом, который я нашел, было использование двух тегов p: datatable, родительский с одним столбцом. Я не мог заставить его работать с p: dataList. Я думаю, p: dataList расширяет один и тот же фиктивный класс.

Должно работать с этим:

<p:datatable id="searchTables" 
    value="#{searchBean.mapKeys}" 
    var="mapKeys"> 
    <p:column> 
     <p:dataTable id="recordTable" 
      value="#{searchBean.resultMap[mapKeys].resultList}" 
      var="recordTable" 
      paginator="true" 
      rows="10"> 
       <f:facet name="header"> 
         <h:outputText value="#{searchBean.resultMap[mapKeys].name}"/> 
       </f:facet> 
        <p:columns value="#{searchBean.resultMap[mapKeys].resultColumns}" 
           var="column" 
           columnIndexVar="colIndex"> 
         <f:facet name="header"> 
          <p:outputPanel> 
           #{column.header} 
          </p:outputPanel> 
         </f:facet> 
         <h:outputText value="#{recordTable[column.property]}"/><br/> 
        </p:columns> 
     </p:dataTable> 
    </p:column>  
</p:dataTable> 
+0

OMG, это сработало, спасибо многому человеку – camiloqp

3

Это, скорее всего, связано с JSF issue 1830.

Лучше всего заменить ui:repeat другого ретранслятора, который делает свою работу лучше UINamingContainer, например, <p:dataList> или даже другой <p:dataTable>. Список пультов <p:dataList> можно удалить с помощью CSS list-style-type: none.

Если это также не сработает, это может быть ошибка в PrimeFaces <p:dataTable>.

+0

Спасибо за ваш ответ, ни один из предложенных решений работал, я думаю, его ошибка с '' сам :( – camiloqp

+0

я задаюсь вопросом, почему '' разве работает либо. – camiloqp

+0

Это совсем не относится к идентификатору клиента. Это не компонент 'UINamingContainer'. Кроме того, он выполняется только во время создания времени просмотра, а не во время визуального отображения. – BalusC

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