我想从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>
还要确保该页与包含的页面在同一个目录