如何以编程方式创建<ui:include>标记?</ui:include>

时间:2013-02-07 06:48:42

标签: jsf jsf-2 primefaces

我正在尝试创建一个动态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>标记的方法。 任何人都可以建议一种方法吗?

1 个答案:

答案 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?