拦截a4j:commandButton请求
我正在使用 A4J、Richfaces 开发 Web 应用程序。 我的要求之一是,当用户尝试离开页面时,我需要检查用户是否更改了表单中的任何值。
我在页面中有保存和取消按钮。 我使用 a4j:command
按钮来取消功能。单击“取消”按钮应该执行以下操作
- 检查用户是否修改了表单中的任何内容(我正在使用 javascript 进行此操作,如果用户更改了任何值,则有一个标志)
- 显示确认框(带有值的 javascript 确认“您真的想要吗当用户更改表单值时放弃更改 - 是或否”)
- 如果用户说“是”,则使用 AJAX 提交表单(通过使用 A4J)
我的 a4j 命令按钮代码如下所示
<a4j:commandButton action="MyClass.cancel_action"
onclick="checkIsPageChanged()"/>
这里的问题是,在使用 using a4j 时:commandButton
,我无法调用中间 javascript 函数(该函数检查用户是否更新了任何值并显示确认框),然后使用 ajax 提交请求。 我查看了 JSF 生成的代码,代码就像(不是确切的,而是语法),
<input type="button"
onclick="checkIsPageChanged();AJAX.submit('')/>
事情是当我单击按钮时,它只调用 checkIsPageChanged()
而不是调用 AJAX.submit()。
任何解决方法都会对我有帮助。
先感谢您。
I am developing web application using A4J, Richfaces.
One of my requirement is, I need to check if the user has changed any values in the form when he is trying navigate away from the page.
I have save and cancel buttons in the page.
I am using a4j:command
button for cancel functionality. Clicking on cancel button should do below things
- Check if the user has modified anything in the form (this I am doing by using javascript and have a flag if user changed any values)
- Display confirmation box (javascript confirm with values "Do you really want to discard the changes -- YES NO") when user changes form values
- If user says YES, then submit the form using AJAX (by using A4J)
My a4j command button code is like this
<a4j:commandButton action="MyClass.cancel_action"
onclick="checkIsPageChanged()"/>
The issue here is, while using using a4j:commandButton
, I cannot call the intermediate javascript function (the function which checks if user has updated any values and displays confirmation box) and then submit the request using ajax.
I have looked at the code generated by JSF and the code is like (not the exact but syntact)
<input type="button"
onclick="checkIsPageChanged();AJAX.submit('')/>
The thing is when I click on button, it is calling only checkIsPageChanged()
and not calling AJAX.submit()
.
Any workaround for this will help me.
Thank you in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用
a4j:jsFunction
并在checkIsPageChanged()
返回 true 时从a4j:commandButton
调用该函数。例如。
Use
a4j:jsFunction
and call that from youra4j:commandButton
when thecheckIsPageChanged()
returns true.eg.
更具体地说,我们可以使用:
返回 false 将不会提交请求。
To be more specific we can use:
Returning false will not submit the request.