有没有人知道Primefaces Extension的Dynaform究竟是什么动态。the dynamic form example似乎没有任何动态。据我所知,这只是一个具有固定布局和固定输入组件的表单。根据{{3}}的陈述,这不是我的预期:
通常我们可以通过h:panelGrid oder构建一个非常简单的表单 p:panelGrid如果行/列的数量,元素的位置, 等已知。静态表格也是如此。但这是不可能的 使用h:panelGrid oder p:panelGrid如果动态描述表单, 在运行时。例如。如果整个表格的定义放在一个 数据库或XML文件。
DynaForm可以构建带有标签,输入的动态表单, 按型号选择和其他元素。其他增强功能可扩展 扩展视图区域(网格),autoSubmit功能,小部件的客户端 API,各方面。支持的方面
答案 0 :(得分:4)
我是这个组件的创建者。为什么你认为布局是固定的?它没有修复,你用Java定义了布局。 Java控件/标签和表单元素中定义的映射通过“type”属性进行。当然,所有可能的表单元素都应该在页面上,因为在XHTML中更容易将它们描述为标记,而不是用Java创建。想象一下,您将使用SelectItems,Ajax行为,Action / ActionListener,许多其他属性在Java中创建SelectOneMenu ...更容易指定1-N映射,如p:treeNode和TreeNode。这是相同的 - 你有pe:dynaFormControl和DynaFormControl。请探索所有代码示例。
感谢。奥列格。
P.S。 My last blog post与此相关。
答案 1 :(得分:3)
其中一位Primefaces Extension作者在他的博客上详细解释了这一点:http://ovaraksin.blogspot.hu/2012/06/dynamic-forms-jsf-world-was-long.html。
重要的部分是:
子标记pe:在Java控件中创建的dynaFormControl匹配 “类型”属性。这通常是“一对多”关系。
您没有在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);