2012-05-29 61 views
2

我在应用程序中使用JSF ajax(我们不能改变= =),我们需要等待用户的操作。我的意思是,在调用ajax方法之前,我需要询问用户是否要使用自定义对话框恢复页面中的所有更改。如果他想继续并恢复,我会通过ajax调用Java方法,但如果没有,我们不需要调用ajax。Javascript异步返回

让我试着更具体:

这是对我的巨大的页面恢复按钮,代码:

<h:commandButton value="#{msg.revertBtn}" accesskey="R" styleClass="actionButton" action="#{styleController.revertChanges}"> 

    <f:ajax execute="@this" onstart="return method();" render="styleCcFormtyleCcTable"> 

</h:commandButton> 

调用它会运行AJAX之前我的javascript功能:method()

我需要用户卡在method()中,直到他在我的自定义确认对话框中点击YesNow按钮,然后返回true或false。

任何想法如何解决?

回答

0

我知道你们中的一些人不会同意我,因为我做了一个巨大的解决方法来让它工作。

我所做的是:

我创建了一个自定义确认对话框,它具有存储用户回复的变量。然后,每当用户点击按钮,它将被存储在那里。

所以,在按钮中我添加了一个点击函数来检查我的变量,并且它是否有任何回复,并执行一些操作,但不是我称之为自定义对话框。

并进入我的自定义对话框中,我点击按钮,但现在与答复。之后,你需要确保你将擦除变量。

就是这样。 2天做o.O让我知道你们是否需要这些代码。

2

您需要挂接按钮的onclick处理程序,以便能够通过相应地返回truefalse来阻止按钮的默认操作。一旦ajax请求被执行,现在已经太迟而无法阻止它。

这是一个使用JavaScript的内置函数confirm()的启动示例。

<h:commandButton ... onclick="return confirm('Are you sure?')"> 
    <f:ajax execute="@this" render="styleCcFormtyleCcTable" /> 
</h:commandButton> 
+0

似乎更好,但我需要使用我自己的确认对话框。是否有任何方式来调用点击方法,并执行如下操作: and button.click检查我是否已经点击并调用AJAX? 这似乎是一个解决方法,但我会让它工作现在的优先事项。谢谢 –