我正在尝试创建一个动态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>
标记的方法。
任何人都可以建议一种方法吗?
答案 0 :(得分:2)
使用FaceletContext#includeFacelet()
:
FaceletContext faceletContext = (FaceletContext) FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
faceletContext.includeFacelet(tab, "include.xhtml");
请注意,在视图构建期间未运行时,此构造在MyFaces中失败。它适用于Mojarra。
无关,您是否知道<p:tabView value>
哪些可以收集?无需以编程方式创建选项卡。另见例如How to add button for adding new tabs near last tab?