0

我正在使用 Primefaces p:datatable 和 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>

为什么在这种情况下跨越而不是列?以及如何在一列中获取列而不是跨度?

问候

4

1 回答 1

1

在您的特定构造中,<ui:repeat>内部<p:panelGrid>不会生成多个 JSF 组件,每个组件只生成一次 HTML。相反,它重用相同的 JSF 组件以在每次迭代中多次生成其 HTML 输出。

这个不对。您需要 a<h:dataTable><p:dataTable>此处而不是<p:panelGrid><ui:repeat>.

例如

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

于 2012-11-27T12:30:20.840 回答