【发布时间】:2012-10-03 22:42:33
【问题描述】:
我们的团队正在编写自使用 Stripes 多年以来的第一个 JSF 2.0 应用程序,我对使用 f:ajax 标记和验证输入的最佳方式有一些疑问。
我看到回答的很多问题都有一个包含多个输入的表单,然后是一个提交按钮),但我们希望维护单个输入字段在更改后立即更新并持久保存到数据库中(没有提交按钮。我们使用 Prototype 的 Ajax.Request 在 Stripes 中可以正常工作,但如果可能的话,这是我想避免的额外步骤。
基本上我们有一个页面,上面有一堆直接由 bean 支持的输入,例如:
<h:inputText id="name" value="#{personController.name}" >
<f:ajax listener="#{personController.ajax}" />
</h:inputText>
您可能知道,在调用侦听器时,bean 上的 name 值已经更改。这会很方便,但我有一些问题:
- 监听器显然不知道 bean 的哪个值被更改了
- 该值已更改,我无法对其执行任何服务器端验证
- 我不知道 name 的旧值是什么,即使我可以对其执行某种验证,我也不知道将值设置回什么
现在看起来我们必须实现某种 javascript 中间人来获取更改的属性和新值,将其发送到 Controller,并让它执行验证,更新数据库,将某些内容发送回渲染等。但就像我说的,这是我们过去对 Stripes 所做的,我真的很想使用更原生的东西。
我确实看到如果我们想要页面上的某种提交按钮,我们可以使用 valueChangeListener 属性之类的东西,但我也想避免大量提交。
我包含了 OpenFaces 标记,因为我们已经将它用于数据表,所以如果其中有什么好东西,我们愿意使用它。但据我所知,他们的 o:ajax 标签并不比 JSF 的 f:ajax 强大多少。
谢谢!
【问题讨论】:
标签: ajax validation jsf jsf-2 openfaces