我正在尝试创建一个动态TabView,其中每个选项卡都显示一个不同的xhtml页面,并提供< ui:include>的帮助.标签.
以下是我尝试执行此操作的代码段
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值>哪个可以收藏?无需以编程方式创建选项卡.另见例如How to add button for adding new tabs near last tab?