3

我想从 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;
    }

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

4

2 回答 2

4

我发现这是一个问题,使用包含 tabView问题 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 论坛

于 2013-01-02T10:34:40.110 回答
1

现在无法测试它,但我认为不需要ui:insert 。因此你的代码应该是

<p:tabView value="#{DatacenterProfileController.data}" var="listItem">
    <p:tab title="#{listItem.name}">
         <ui:include src="#{listItem.page}" />
    </p:tab>
</p:tabView>

还要确保此页面与包含的页面位于同一目录中

于 2012-12-28T15:44:10.610 回答