从Java列表生成p:tabs

从Java列表生成p:tabs,java,jsf,jsf-2,primefaces,Java,Jsf,Jsf 2,Primefaces,我想从Java列表创建Primefaces选项卡。我测试了这段代码: <p:tabView value="#{DatacenterProfileController.data}" var="listItem"> <p:tab title="#{listItem.name}"> <ui:insert> <ui:include src="#{listItem.page}" /> </

我想从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 dataList=new ArrayList();
公共类网页{
私有字符串名称;
私有字符串页;
公共页sobj(字符串名称,字符串页){
this.name=名称;
this.page=page;
}
公共字符串getName(){
返回名称;
}
公共void集合名(字符串名){
this.name=名称;
}
公共字符串getPage(){
返回页面;
}
公共无效设置页(字符串页){
this.page=page;
}
}
@施工后
public void datagenerate(){
添加(新的页面sobj(“General”、“DCProfileTabGeneral.xhtml”);
添加(新页面sobj(“Zones”,“DCProfileTabZones.xhtml”);
添加(新页面sobj(“Generators”,“DCProfileTabGenerators.xhtml”);
添加(新页面sobj(“HVAC”,“DCProfileTabHVACs.xhtml”);
}
公共列表getdata(){
返回数据列表;
}

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

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

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


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

我发现这是一个问题,请使用包含选项卡视图

这是一个有效的例子:

<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>


取自此

您确定在正确的时间调用datagenerate吗?(即使我看到它被标记为后施工)。通过检查数组的大小,尝试移动“getData”中的填充,填充,然后返回以消除这种可能性。是否发布您想法的代码示例?public List getData(){if(dataList.size()==0){dataList.add(…)};return dataList;}在getdata中填充列表,而不是在“datagenerate”中填充列表。如果这样做有效,那么问题在于填充数组。
<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>