jsf - 拦截 a4j :commandButton request

标签 jsf richfaces ajax4jsf

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

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

  1. 检查用户是否修改了表单中的任何内容(这是我通过使用 javascript 完成的,如果用户更改了任何值,则有一个标志)
  2. 当用户更改表单值时显示确认框(javascript 确认值“你真的要放弃更改——是否”)
  3. 如果用户回答"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/

相关文章:

jsf - <f :ajax> listener not working in nested <p:overlayPanel>

jsf - jsf中的分页

javascript - 向 JSF a4j :jsFunction oncomplete event 发送回调

java - 使用 a4j :commandbutton vs h:commandbutton to present-new-pages in richfaces

java - 托管 Bean 何时创建以及 Bean 的属性何时创建?

java - Primefaces 对话框操作在初始化期间被调用

java - JSF 2.0 View 范围不工作

ajax - ajax4jsf 死了吗?还有哪些其他用于 JSF 的 AJAX 库?

jsf-2 - JSF @ViewScoped Bean 状态丢失

javascript - 如何使用 javascript 从 rich :calendar? 获取日期