使用PrimeFaces动态生成制表符

Mar*_*enz 7 java jsf primefaces

嗨,我想迭代一个person-object列表,并在每个人的标签中显示数据.我试过了:

<p:tabView>
<ui:repeat ...>
   <p:tab title="#{expression}>
</ui:repeat>
</p:tabView>
Run Code Online (Sandbox Code Playgroud)

这不起作用.任何帮助赞赏

马塞尔

Kev*_*ahe 17

PrimeFaces 3.x的tabView现在支持动态数量的选项卡,并增加了自己的迭代功能:

<p:tabView value="#{myBean.tabList}" var="tabItem">
    <p:tab title="#{tabItem.tabTitle}">
        <h:outputText value="#{tabItem.valueA}"/>
        ... etc.
    </p:tab>
</p:tabView>
Run Code Online (Sandbox Code Playgroud)

不幸的是,仍然无法在同一个tabView中包含固定和动态选项卡(我想做),甚至无需重建视图即可动态添加选项卡.幸运的是,使用SessionScoped或CDI ConversationScoped bean(或者也许是JSF ViewScoped bean)时,做后者并不是什么大问题.


Bal*_*usC 3

必须p:tabView了解其所有选项卡。因此,您确实需要在视图构建时而不是视图渲染时创建选项卡。所以使用c:forEach而不是ui:repeat. 它已包含在 Facelets 中,其默认 XML 命名空间是xmlns:c="http://java.sun.com/jsp/jstl/core".


根据您的新问题进行更新:这确实是c:forEach. 您基本上必须自己指定输入 ID/名称并自己收集它们。另一种替代方法是在托管 bean 代码中以编程方式构建选项卡,或者在 PrimeFaces 上发布功能请求以添加<p:tabs>采用集合或数组的组件。