我必须创建屏幕以在视图中显示大量JPA实体。这将是伟大的创建一个facet,并传递给它的字段集合,如List<Object>
。
facelet/custom组件需要将列表中的每个元素转换为适当的标签来显示,例如枚举字段转换为h:selectOneMenu,字符串字段转换为h:inputText等。这需要在运行时完成。
最简单的方法是什么?
以前参与过一个从存储配置动态创建整个页面的项目。你需要做两件基本的事情
- BackingBean。您将使用它来访问facet上的UIComponent,它将充当生成的UIComponent的父组件。比如panelGroup。但是,您需要将UIComponents绑定到支持bean上,以便有一个父组件,您可以向其添加动态创建的UIComponents 。
- 对Application组件的访问。通常是FacesContext.getApplication()(我是在JavaEE 5中处理这个问题的,所以它在注入中可能看起来有点不同)。一旦你有了Application组件,你调用createComponent方法,传入你想要创建的组件的类型。
然后,它变成了动态创建组件、在代码中配置组件并将它们添加到通过绑定bean定义的父uiccomponent的活动。