1

我必须创建屏幕以在视图中显示大量 JPA 实体。创建一个 facelet 并将一组字段传递给它会很棒,例如List<Object>.

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

最简单的方法是什么?

4

1 回答 1

0

之前参与过一个从存储的配置动态创建整个页面的项目。你需要两个基本的东西

  • 一个BackingBean。您将使用它来访问 facelet 上的 UIComponent,它将充当生成的 UIComponents 的父级。类似于 panelGroup 的东西。但是,您需要将 UIComponent 绑定到支持 bean,以便拥有一个父级,您将针对该父级添加动态创建的 UIComponents
  • 访问应用程序组件。通常是 FacesContext.getApplication()(我在 JavaEE 5 中处理过这个问题,所以它看起来可能与注入有点不同)。拥有 Application 组件后,调用 createComponent 方法,传入要创建的组件类型。

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

于 2013-03-31T04:45:13.340 回答