如何在运行时以编程方式生成JSF组件?

时间:2013-03-31 04:33:46

标签: jsf jsf-2

我必须创建屏幕以在View中显示许多JPA实体。创建一个facelet并将一个字段集合传递给它会很棒。 List<Object>

facelet /自定义组件需要将列表中的每个元素转换为适当的标记以供显示,例如h:selectOneMenu的枚举字段,h:inputText的字符串字段等。这需要在运行时完成。

最简单的方法是什么?

1 个答案:

答案 0 :(得分:0)

以前从事存储配置动态创建整个页面的项目。你需要两件基本的东西

  • BackingBean。您将使用它来访问facelet上的UIComponent,它将充当生成的UIComponent的父级。像panelGroup这样的东西。但是,您需要将UIComponent绑定到辅助bean,以便拥有一个父级,您将根据该父级添加动态创建的UIComponent
  • 访问应用程序组件。通常是FacesContext.getApplication()(我在JavaEE 5中对此进行了研究,因此它可能与注入看起来有点不同)。获得Application组件后,调用createComponent方法,传入要创建的组件类型。

然后它成为动态创建组件,在代码中配置它们并将它们添加到通过绑定bean定义的父UIComponent的活动。这可能很棘手,但可以做到。