【问题标题】:How to create <ui:include> tag programmatically?如何以编程方式创建 <ui:include> 标签?
【发布时间】:2013-02-07 06:48:41
【问题描述】:

我正在尝试创建一个动态 TabView,其中每个选项卡在 &lt;ui:include&gt; 标签的帮助下显示不同的 xhtml 页面。

以下是我正在尝试执行的代码 sn-p

    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);

我搜索了很多,但找不到任何方法来生成&lt;ui:include&gt; 标签。 谁能建议一种方法来做到这一点?

【问题讨论】:

  • 没有对应的 UIComponent 类,它是一个标签。如果要动态更改视图,请使用 facelets。使用 facelets 将使您的工作变得轻松。
  • 我遇到了同样的问题。现在有什么解决办法吗?

标签: jsf jsf-2 primefaces


【解决方案1】:

使用FaceletContext#includeFacelet():

FaceletContext faceletContext = (FaceletContext) FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
faceletContext.includeFacelet(tab, "include.xhtml");

请注意,在视图构建期间未运行时,此构造在 MyFaces 中失败。它适用于 Mojarra。


与具体问题无关,您知道&lt;p:tabView value&gt; 可以收集吗?无需以编程方式创建选项卡。另见例如How to add button for adding new tabs near last tab?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-07
    • 2012-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多