3

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

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

  1. 检查用户是否修改了表单中的任何内容(我正在使用 javascript 执行此操作,如果用户更改了任何值,则有一个标志)
  2. 当用户更改表单值时显示确认框(javascript 确认值“您真的要放弃更改 - 是否”)
  3. 如果用户说是,则使用 AJAX 提交表单(使用 A4J)

我的 a4j 命令按钮代码是这样的

<a4j:commandButton action="MyClass.cancel_action"
    onclick="checkIsPageChanged()"/>

这里的问题是,在使用 usinga4j:commandButton时,我无法调用中间 javascript 函数(该函数检查用户是否更新了任何值并显示确认框)然后使用 ajax 提交请求。我查看了 JSF 生成的代码,代码就像(不是确切的,而是语法)

<input type="button"
    onclick="checkIsPageChanged();AJAX.submit('')/>

问题是当我点击按钮时,它只是调用checkIsPageChanged()而不是调用AJAX.submit()

任何解决方法都会对我有所帮助。

先感谢您。

4

2 回答 2

3

当返回 true时使用a4j:jsFunction并调用它。a4j:commandButtoncheckIsPageChanged()

例如。

<a4j:commandButton action="MyClass.cancel_action"
    onclick="if(checkIsPageChanged()) { cancel(); }"/>
<a4j:jsFunction name="cancel" action="MyClass.cancel_action"/>
于 2009-08-24T15:54:02.253 回答
3

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

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

返回 false 将不会提交请求。

于 2009-08-25T04:05:00.830 回答