3

有谁知道 Primefaces Extension 的 Dynaform 的 Dynamic 到底是什么。动态表单示例似乎没有任何动态。据我所知,这只是一个具有固定布局和固定输入组件的表单。鉴于头版上的声明,这不是我所期望的:        

通常,如果行数/列数、元素位置等已知,我们可以通过 h:panelGrid 或 p:panelGrid 构建一个非常简单的表单。这对于静态表单是正确的。但是,如果表单是在运行时动态描述的,则无法使用 h:panelGrid 或 p:panelGrid。例如,如果整个表单的定义放在数据库或 XML 文件中。

DynaForm 可以通过模型构建带有标签、输入、选择和其他元素的动态表单。其他增强功能包括可扩展的扩展视图区域(网格)、自动提交功能、小部件的客户端 API、各种方面。支持的方面

 

4

2 回答 2

5

我是这个组件的创建者。为什么你认为布局是固定的?它不是固定的,您在 Java 中定义布局。Java 控件/标签和表单元素中定义的映射通过“类型”属性发生。当然,所有可能的表单元素都应该在页面上,因为在 XHTML 中将它们描述为标签更容易,而不是在 Java 中创建。想象一下,您将在 Java 中创建一个 SelectOneMenu,其中包含 SelectItems、Ajax 行为、Action / ActionListener 以及许多其他属性……更容易指定 1-N 映射,例如 p:treeNode 和 TreeNode。这里是一样的——你有 pe:dynaFormControl 和 DynaFormControl。请浏览所有代码示例。

谢谢。奥列格。

PS我上一篇博文是关于这个组件的。

于 2012-06-18T10:19:35.437 回答
4

Primefaces Extension 的作者之一在他的博客上更详细地解释了它:http: //ovaraksin.blogspot.hu/2012/06/dynamic-forms-jsf-world-was-long.html

重要的部分是:

子标签 pe:dynaFormControl 匹配在 Java 控件中由“type”属性创建的。这通常是“一对多”的关系。

您无需在 xhtml 页面中定义布局,您只需创建一些您在 java 代码中引用的自定义组件。

basicUsage示例中,您可以看到:

<pe:dynaFormControl type="calendar" for="cal">
    <p:calendar id="cal" value="#{data.value}" />
</pe:dynaFormControl>

这将创建一个日历控件类型,使用p:calendar. 您可以在支持 bean 中引用它:

DynaFormControl control = row.addControl(property, "calendar", 1, 1); 
于 2012-06-18T10:21:40.393 回答