关于Primefaces Extension的Dynaform的动态是什么

时间:2012-06-18 08:04:15

标签: java jsf-2 primefaces primefaces-extensions

有没有人知道Primefaces Extension的Dynaform究竟是什么动态。the dynamic form example似乎没有任何动态。据我所知,这只是一个具有固定布局和固定输入组件的表单。根据{{​​3}}的陈述,这不是我的预期:

  

通常我们可以通过h:panelGrid oder构建一个非常简单的表单   p:panelGrid如果行/列的数量,元素的位置,   等已知。静态表格也是如此。但这是不可能的   使用h:panelGrid oder p:panelGrid如果动态描述表单,   在运行时。例如。如果整个表格的定义放在一个   数据库或XML文件。

     

DynaForm可以构建带有标签,输入的动态表单,   按型号选择和其他元素。其他增强功能可扩展   扩展视图区域(网格),autoSubmit功能,小部件的客户端   API,各方面。支持的方面

2 个答案:

答案 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);