我正在使用Primefaces p:datatable with p:rowExpansion。我的目标是使用以下xhtml显示行详细信息。
<p:dataTable
value="#{bilisimArizaBean.kullaniciBilisimArizalariListesi}"
var="ariza">
<p:column style="width:4%">
<p:rowToggler />
</p:column>
<p:column headerText="Arıza no">
#{ariza.bilisimArizaId}
</p:column>
<p:column headerText="">
#{ariza.bilisimArizaTuru.bilisimArizaTuru}
</p:column>
<p:column>
#{ariza.cihazMarkasi} #{ariza.cihazModeli} #{ariza.cihazSeriNo}
</p:column>
<p:column>
#{ariza.arizaAciklama}
</p:column>
<p:rowExpansion>
<div>
<p:panelGrid id="display" columns="4" cellpadding="4"
style="border:1px;border-color:red;"
styleClass=" ui-widget-content grid">
<ui:repeat var="ticket" value="#{ariza.bilisimArizaTicket}">
<h:outputText value="Gelişme No" />
<h:outputText id="gelisme" value="#{ticket.ticketAciklama}" />
<h:outputText value="Durum:" />
<h:outputText id="durum" value="#{ticket.arizaDurum.durumAdi}" />
<br></br>
</ui:repeat>
</p:panelGrid>
</div>
</p:rowExpansion>
</p:dataTable>
我预计它会在p:rowExpansion中创建包含列的表行。但是,ui:repeat会生成一个只包含一列的行的表。并跨越此列。那是
<table>
<tr>
<td><span>data</span><span>data</span><span>data</span></td>
</tr>
<tr>
<td><span>data</span><span>data</span><span>data</span></td>
</tr>
.
.
.
</table>
我期待并想要以下
<table>
<tr>
<td>data</td> <td>data</td> <td>data</td>
</tr>
<tr>
<td>data</td> <td>data</td> <td>data</td>
</tr>
.
.
.
</table>
在这种情况下,为什么跨越而不是列?如何在一列中获取列而不是跨度?
问候
答案 0 :(得分:1)
在您的特定构造中,<ui:repeat>
内的<p:panelGrid>
不会生成多个JSF组件,这些组件每次只生成一次HTML。相反,它重复使用相同的JSF组件在每次迭代时多次生成HTML输出。
这是不对的。您需要<h:dataTable>
或<p:dataTable>
而不是<p:panelGrid><ui:repeat>
。
E.g。
<h:dataTable var="ticket" value="#{ariza.bilisimArizaTicket}">
<h:column><h:outputText value="Gelişme No" /></h:column>
<h:column><h:outputText id="gelisme" value="#{ticket.ticketAciklama}" /></h:column>
<h:column><h:outputText value="Durum:" /></h:column>
<h:column><h:outputText id="durum" value="#{ticket.arizaDurum.durumAdi}" /></h:column>
</h:dataTable>
这些跨度不相关,它们只来自<h:outputText>
。