拦截a4j:commandButton请求

发布于 2024-08-02 19:22:14 字数 873 浏览 2 评论 0原文

我正在使用 A4J、Richfaces 开发 Web 应用程序。 我的要求之一是,当用户尝试离开页面时,我需要检查用户是否更改了表单中的任何值。

我在页面中有保存和取消按钮。 我使用 a4j:command 按钮来取消功能。单击“取消”按钮应该执行以下操作

  1. 检查用户是否修改了表单中的任何内容(我正在使用 javascript 进行此操作,如果用户更改了任何值,则有一个标志)
  2. 显示确认框(带有值的 javascript 确认“您真的想要吗当用户更改表单值时放弃更改 - 是或否”)
  3. 如果用户说“是”,则使用 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

  1. 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)
  2. Display confirmation box (javascript confirm with values "Do you really want to discard the changes -- YES NO") when user changes form values
  3. 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猫性小仙女 2024-08-09 19:22:14

使用 a4j:jsFunction 并在 checkIsPageChanged() 返回 true 时从 a4j:commandButton 调用该函数。

例如。

<a4j:commandButton action="MyClass.cancel_action"
    onclick="if(checkIsPageChanged()) { cancel(); }"/>
<a4j:jsFunction name="cancel" action="MyClass.cancel_action"/>

Use a4j:jsFunction and call that from your a4j:commandButton when the checkIsPageChanged() returns true.

eg.

<a4j:commandButton action="MyClass.cancel_action"
    onclick="if(checkIsPageChanged()) { cancel(); }"/>
<a4j:jsFunction name="cancel" action="MyClass.cancel_action"/>
香草可樂 2024-08-09 19:22:14

更具体地说,我们可以使用:

onclick="if(!isPageChanged()) {return false}" 

返回 false 将不会提交请求。

To be more specific we can use:

onclick="if(!isPageChanged()) {return false}" 

Returning false will not submit the request.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文