我想从Java列表创建Primefaces选项卡。我测试了这段代码:

<p:tabView value="#{DatacenterProfileController.data}" var="listItem">
    <p:tab title="#{listItem.name}">
        <ui:insert>
            <ui:include src="#{listItem.page}" />
        </ui:insert>
    </p:tab>
</p:tabView>
private List<PagesObj> dataList = new ArrayList<>();

    public class PagesObj {

        private String name;
        private String page;

        public PagesObj(String name, String page) {
            this.name = name;
            this.page = page;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        public String getPage() {
            return page;
        }

        public void setPage(String page) {
            this.page = page;
        }
    }

    @PostConstruct
    public void datagenerate(){
        dataList.add(new PagesObj("General", "DCProfileTabGeneral.xhtml"));
        dataList.add(new PagesObj("Zones", "DCProfileTabZones.xhtml"));
        dataList.add(new PagesObj("Generators", "DCProfileTabGenerators.xhtml"));
        dataList.add(new PagesObj("HVAC", "DCProfileTabHVACs.xhtml"));
    }

    public List<PagesObj> getdata() {

        return dataList;
    }

但是由于某些原因,选项卡的正文未正确加载-我得到的正文选项卡为空,可能是因为找不到文件。您能帮我解决问题吗?

最佳答案

我发现这是一个问题,将include与tabView Issue 4051一起使用

所以这是工作示例:

<p:tabView  id="tabW">
    <c:forEach items="#{DatacenterProfileController.data}" var="listItem">
        <p:tab title="#{listItem.name}">
            <h:panelGrid columns="2" cellpadding="10">
                <ui:include src="#{listItem.page}.xhtml"  />
            </h:panelGrid>
        </p:tab>
    </c:forEach>
</p:tabView>

从这个primefaces forum

09-28 02:41