我有一个 JSF 页面,我需要允许用户在该页面上动态创建表单并提交从同一页面输入到此表单中的数据。
我采用了两种设计方法来实现它,但它们都不能完全发挥作用。
方法一:我将 ap:panel 组件放在 JSF 页面上,作为动态表单的容器,并将其绑定到我的 backing bean。此外,我放置了 commandButtons 以在页面上添加表单元素,并且在这些按钮的操作处理程序中,我放置了将特定 UIComponents 添加到面板 UI 组件的逻辑。这些动作处理程序的结果,我设置为与 faces-redirect=true 相同的页面。结果:动态显示正确,但此动态表单的提交按钮始终仅在第二次单击时有效。
方法二:我把 ap:panel 组件放在 JSF 页面上,作为动态表单的容器。在这个面板中,我使用 ui:include 包含了一个生成的 JSF 页面。与之前的方法类似,在添加表单元素的命令按钮的操作处理程序中,我生成要包含的 JSF 页面。这些动作处理程序的结果,我设置为与 faces-redirect=true 相同的页面。结果:在动作处理程序执行和页面渲染完成后,生成的 JSF 页面没有立即显示。刷新 2 或 3 次手册页后,将显示生成的 JSF 页面。
我想,我没有采用正确的设计来满足我的要求。您能否建议我在这两种方法或任何替代方法中出了什么问题。
我正在使用 PrimeFaces 和 Tomcat 7.0.27。
最好的问候,阿南德。