从Java List中生成p:tab



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

但是由于某种原因,标签的主体没有正确加载-我得到空的主体标签可能是因为没有找到文件。你能帮我解决这个问题吗?

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

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

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

还要确保该页与包含的页面在同一个目录

相关内容

  • 没有找到相关文章

最新更新