在运行时从辅助bean添加JSF 2复合组件

Fab*_*bio 3 jsf runtime loading composite-component

编辑问题......

你好,

我想从支持bean加载我的复合组件的.xhtml文件,并动态地将其添加到页面..xhtml文件的名称来自变量.

例:

public MyBean (){

    String componentFile = "myCompositeComponent.xhtml"

    public String addComponentToPage(){

          //how do that?...

          return null;
    }

} 
Run Code Online (Sandbox Code Playgroud)

谢谢!

Bal*_*usC 5

这是不是可能.复合组件是基于模板的,只能在视图中使用.您最好的选择是重复您最初在模型中的复合组件中编写的JSF代码.更好的是创建一个完整的@FacesComponent类,扩展UIComponent,完成一个@FacesRenderer.确实,这是一项繁琐且不透明的工作,但是这样你最终会得到一个可以通过单个代码行在视图和模型中重复使用的组件.

另一种选择是将所有可能的组件放在视图中并使用该rendered属性.

<my:component1 rendered="#{bean.myComponentType == 'component1'}" />
<my:component2 rendered="#{bean.myComponentType == 'component2'}" />
<my:component3 rendered="#{bean.myComponentType == 'component3'}" />
...
Run Code Online (Sandbox Code Playgroud)

如果需要,可以在Facelets标记文件中包装它,以便可以将其隐藏起来并在多个位置重复使用.