我正在尝试创建一个动态TabView,在<ui:include>
标记的帮助下,每个选项卡都显示不同的xhtml页面。
下面是我尝试做的代码片段
Tab tab= new Tab();
Portal portal=itr.next();
tab.setTitle(portal.getPortal_name());
tab.setId(portal.getPortal_name());
/* Code to generate <ui:include> tag
* and add it to tab
*/
tabView.getChildren().add(tab);
我搜索了很多,但找不到任何生成<ui:include>
标签的方法。有人能建议一种方法吗?
使用FaceletContext#includeFacelet()
:
FaceletContext faceletContext = (FaceletContext) FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
faceletContext.includeFacelet(tab, "include.xhtml");
请注意,当在视图构建期间不运行时,此构造在MyFaces中会失败。它在Mojarra工作。
与具体问题无关您知道<p:tabView value>
可以收集吗?无需以编程方式创建选项卡。另请参阅例如如何在最后一个选项卡附近添加用于添加新选项卡的按钮?