0

我有一个UIComponent绑定到支持 bean 的。我想ui:include通过我的支持 bean 的 init 方法将一个子组件添加到与标签对应的组件中。

例如:

<p:tab>
    <ui:include src="/page.xhtml" />
</p:tab>

我想在我的支持 bean 中创建它,例如:

<p:tab binding="${bean.tab}" /> 

所以基本上我正在为 ui:include 寻找相应的 UIComponent 类,所以我可以将它作为子项添加到我的选项卡属性中。

谢谢!

更新:

我现在正在尝试使用 faceletContext.includeFacelet :)

4

2 回答 2

1

我已经阅读了这个帖子 20 次,一开始我找不到解决方案,所以在我找到正确的方法后,这是我对它的附加评论:

FacesContext facesContext = FacesContext.getCurrentInstance();
FaceletFactory defaultFactory = ApplicationAssociate.getInstance(facesContext.getExternalContext()).getFaceletFactory();
Facelet facelet = defaultFactory.getFacelet(xhtmlUrl);

然后我创建了一个 FaceletHandler 来添加组件。

另一个解决方案是:

FaceletContext faceletContext = (FaceletContext) facesContext.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
faceletContext.includeFacelet(parentComponent, xhtmlUrl); 
于 2011-08-10T12:19:08.070 回答
0

好的,它正在工作:) 从 facescontext 获取 faceletContext:

FaceletContext faceletContext = (FaceletContext) FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
于 2010-08-09T14:03:19.590 回答