我認爲我有我的閃光消息的部分:的grails鑑於顯示閃光消息而執行
<g:if test="${flash.message}">
<section id="flashTile">
<div class="alert fade in">
<a class="close" data-dismiss="alert" href="#">×</a>
<p>${flash.message}</p>
</div>
</section>
</g:if>
在我請在我的控制器的動作的視圖中的某些點:
<g:form action="doAction">
<g:submitButton class="ghbtn" name="doAction" />
</g:form>
控制器作用類似於:
def doAction() {
try {
flash.message = 'Computing...'
webserviceService.compute()
flash.message = 'Computed'
redirect(action: "list")
return
} catch (Exception e2) {
flash.message = 'Could not compute'
redirect(action: "list")
return
}
}
當我點擊doAction
按鈕和webserviceService.compute()
已成功執行,我收到'Computed'消息;當發生錯誤時,我得到'無法計算'的信息。這工作正常。
由於webserviceService.compute()
需要幾秒鐘才能執行,我想通知用戶系統已收到請求並正在處理該請求,否則用戶可能無法正常工作並再次單擊該按鈕。
我添加了另一個Flash消息'Computing ...',它應該在點擊doAction
之後立即顯示,直到webservice被執行。
的工作流程應該是這個樣子:
點擊doAction
- >節目 '計算...'
webserviceService.compute()
執行 - > '計算...' 被 '計算' 或「能取代不計算'
這裏唯一的問題是'計算...'從來沒有出現。任何提示?
感謝您的提示。現在我已經改變了我的形式
<g:form action="calculate" onsubmit="return calculating()">
和
<script type="text/Javascript">
function calculating() {
alert("come here");
return true;
</script>
代替警戒線我想改變flash.message,但SOFAR我還沒有發現任何關於這個有用。 任何人都可以給我一個提示嗎?
您是否考慮在第一次單擊後禁用按鈕以防止雙擊? – JoshDM
這將是一個很好的解決方法,但我仍然想按照上述方式解決它 – user2041083
看起來Ajax請求會爲您做竅門,但接下來沒有可用的flash消息... – herom