【发布时间】:2011-02-16 09:03:33
【问题描述】:
我有一个非常复杂的表单,其中包含大量输入和验证器。对于用户而言,完成该过程需要相当长的时间(甚至超过一个小时),因此他们希望能够保存草稿数据,即使它违反了诸如未输入必填字段之类的规则。
我相信这个问题在许多 Web 应用程序中都很常见,但是找不到任何公认的模式应该如何实现。您能告诉我如何实现吗?
现在我可以看到以下选项:
- 在“保存草稿”按钮上使用 immediate=true 不起作用,因为 UI 数据不会存储在 bean 上,所以我无法访问它。从技术上讲,我可以在 UI 组件树中找到数据,但遍历这似乎不是一个好主意。
- 从页面中删除所有字段验证,并在为表单定义的操作侦听器中以编程方式验证数据。同样,这不是一个好主意,表单真的很复杂,有很多字段,所以以这种方式实现的验证会非常混乱。
- 实现我自己的验证器,该验证器将由一些请求属性控制,该属性将设置为标准表单提交(需要完整验证),并将取消设置为“另存为草稿”提交(应跳过验证时)。同样,这不是一个好的解决方案,我需要为我正在使用的所有验证器提供自己的包装器。
但正如你所见,没有人是真正合理的。问题真的没有简单的解决办法吗?
【问题讨论】:
标签: jsf validation