JSF2:添加ui:include到绑定对象的子节点

时间:2010-08-04 11:45:27

标签: java jsf facelets jsf-2 primefaces

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

例如:

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

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

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

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

谢谢!

更新

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

2 个答案:

答案 0 :(得分: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); 

答案 1 :(得分:0)

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

FaceletContext faceletContext = (FaceletContext) FacesContext.getCurrentInstance().getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);