我正在使用 A4J、Richfaces 开发 Web 应用程序。 我的要求之一是,我需要检查用户在尝试离开页面时是否更改了表单中的任何值。
我在页面中有保存和取消按钮。
我正在使用 a4j:command
按钮来实现取消功能。单击取消按钮应该执行以下操作
- 检查用户是否修改了表单中的任何内容(这是我通过使用 javascript 完成的,如果用户更改了任何值,则有一个标志)
- 当用户更改表单值时显示确认框(javascript 确认值“你真的要放弃更改——是否”)
- 如果用户回答"is",则使用 AJAX(通过使用 A4J)提交表单
我的a4j命令按钮代码是这样的
<a4j:commandButton action="MyClass.cancel_action"
onclick="checkIsPageChanged()"/>
这里的问题是,在使用 a4j:commandButton
时,我无法调用中间 javascript 函数(检查用户是否已更新任何值并显示确认框的函数)然后提交请求使用 Ajax 。
我查看了 JSF 生成的代码,代码就像(不完全是语法)
<input type="button"
onclick="checkIsPageChanged();AJAX.submit('')/>
问题是当我点击按钮时,它只调用 checkIsPageChanged()
而不是调用 AJAX.submit()
。
对此的任何解决方法都会对我有所帮助。
提前谢谢你。
最佳答案
使用 a4j:jsFunction
并在 checkIsPageChanged()
返回 true 时从您的 a4j:commandButton
调用它。
例如。
<a4j:commandButton action="MyClass.cancel_action"
onclick="if(checkIsPageChanged()) { cancel(); }"/>
<a4j:jsFunction name="cancel" action="MyClass.cancel_action"/>
关于jsf - 拦截 a4j :commandButton request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1315882/