2
    <h:dataTable value="#{SearchingBeans.list}" var="entry">
        <h:column>
            <f:facet name="header">
                <h:outputLabel>Photo</h:outputLabel>
            </f:facet>
        </h:column>
        <h:column>
            <f:facet name="header">
                <h:outputLabel>Pseudo</h:outputLabel>
            </f:facet>
            <h:outputLabel value="#{entry.pseudo}"></h:outputLabel>
        </h:column>
        <h:column>
            <f:facet name="header">
                <h:outputLabel>Description</h:outputLabel>
            </f:facet>
            <h:outputLabel value="#{entry.description}"></h:outputLabel>
        </h:column>
        <h:column>
            <f:facet name="header">
                <h:outputLabel>Photo</h:outputLabel>
            </f:facet>
            <h:outputLabel value="#{entry.photo[0].path}"></h:outputLabel> <-- this a List
        </h:column>
    </h:dataTable>

我有一个实体成员,他的一个属性是一张带有 get/set 的列表照片,该属性已填充我不知道如何在 jsf 中获取该值我只想要每个成员的第一张照片,因为他们有 2-3 张照片。这可能吗??任何其他解决方案将不胜感激。

4

1 回答 1

7

<ui:repeat>只需使用或<h:dataTable>通常的方式对其进行迭代。将多个迭代组件相互嵌套是完全有效的。如果是<h:dataTable>,您只需确保将嵌套的迭代组件放在<h:column>.

例如

<h:dataTable value="#{bean.entities}" var="entity">
    <h:column>
        #{entity.property}
    </h:column>
    <h:column>
        <ui:repeat value="#{entity.subentities}" var="subentity">
            #{subentity.property}
        </ui:repeat>
    </h:column>
</h:dataTable>

或者

<h:dataTable value="#{bean.entities}" var="entity">
    <h:column>
        #{entity.property}
    </h:column>
    <h:column>
        <h:dataTable value="#{entity.subentities}" var="subentity">
            <h:column>
                #{subentity.property}
            </h:column>
        </h:dataTable>
    </h:column>
</h:dataTable>

<ui:repeat>只有在嵌套多个组件并<f:ajax>在其中使用旧版本的 Mojarra时,您才可能遇到问题。

<c:forEach>由于此处解释的原因,JSTL 在 JSF2 Facelets 中嵌套在 JSF 迭代组件中时,只有 JSTL不起作用……有意义吗?


与具体问题无关,请不要滥用<h:outputLabel>纯文本演示。它生成一个 HTML<label>元素,旨在按属性标记输入元素。for但是,您在代码中没有这样做。你应该<h:outputText>改用。顺便说一句,我最近在启动代码中经常看到这种情况。一定有一个糟糕的教程或资源在模板文本中滥用<h:outputLabel>这种方式而不是纯 EL。<h:outputText>您使用的是哪个教程/资源?然后我可以就这个严重的误导联系作者。另请参见h:outputLabel 及其“for”属性的用途

于 2013-05-16T15:28:08.817 回答