PrimeFaces TabView中固定和动态选项卡的组合

时间:2012-06-04 14:11:18

标签: jsf primefaces tabview

是否可以在PF TabView中组合固定和动态标签?我的用例是动态地为对象列表中的每个对象创建一个选项卡。固定选项卡将包含用于创建新对象的表单。提交表单后,必须将新对象添加到TabView。

到目前为止,我设法仅使用两个视图实现此功能 - 一个用于动态显示对象,另一个用于新对象的表单。

我尝试编写一个新的TabView渲染器,它能够渲染动态和固定标签。但是,如果我组合两个选项卡类型,PF命令按钮在固定选项卡上不起作用(我在此处发布了此问题:http://forum.primefaces.org/viewtopic.php?t=20840)。

我发现了一篇关于在托管bean(http://stackoverflow.com/questions/4052581/dynamically-generate-tabs-with-primefaces)中创建PF标签的论坛帖子。如果可能的话,我想避免它在.jsf视图中以声明方式使用PF组件。

2 个答案:

答案 0 :(得分:1)

创建TabView,手动添加一个固定标签,然后使用<c:forEach>添加动态标签:

<p:tabView>
    <p:tab title="Fixed tab">
        <h1>This is the fixed tab</h1>
    </p:tab>

    <c:forEach items="#{myBean.listItems}" var="item">
        <p:tab title="#{item.title}" closable="true">
            <h1>This is a dynamic tab</h1>
        </p:tab>
    </c:forEach>
</p:tabView>
public List<Item> getListItems() {
    Item item1 = new Item("Item 1 title");
    Item item2 = new Item("Item 2 title");
    Item item3 = new Item("Item 3 title");
    List<Item> listItem = new ArrayList<>();
    listItem.add(item1);
    listItem.add(item2);
    listItem.add(item3);
    return listItem;
}

结果:

Fixed tab selected

Dynamic tab selected

答案 1 :(得分:0)

我们在最近的项目中遇到了同样的问题,并以简单而粗略的方式解决了这个问题:

我们创建了两个(嵌套)Tabview。顶部包括2个标签。一个通过嵌套的第二个(动态)tabview显示所有动态选项卡。第二个显示固定标签。 (在我们的例子中,固定的选项卡不会创建新选项卡,但显示从动态选项卡计算的最终结果)。

这只是一种解决方法,但也许有帮助。