我有一个绑定到辅助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:)
答案 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);