這是問題:我有一個remoteForm,它本身工作正常。我調試了控制器,並且每個命令都運行完畢。但是,如果發生異常並且我設置了flash.error消息。該消息將僅在手動按F5(刷新)後顯示。我不明白爲什麼AJAX調用可以工作,但閃光消息是空的。Grails:如果您使用ajax,爲什麼只刷新刷新消息?
我有一個遠程表單(index.gsp中):
...
<g:formRemote name="remoteForm"
url="[ controller: 'document',
action: 'search']"
onLoading="showSpinner();"
update="searchBlock"
action="${createLink(controller: 'document', action:'search')}"
>
<div class='info_message'>
${flash.message}
</div>
<div id="searchBlock">will be exchanged</div>
......
控制器:
......
} catch (Exception e){
log.error(e)
flash.error = e.getMessage()
flash.message="HINTTEST"
render (template:'searchNoResult')
return
}
.....
模板(_searchNoResult的)具有以下內容:
<span>Sorry, your search yielded no result.</span>
<g:if test='${flash.error}'>
<div class='error_message'>
Error: ${flash.error}
</div>
</g:if>
<g:if test='${flash.messages}'>
<div class='info_message'>
Hint: ${flash.message}
</div>
</g:if>
文檔說明:Flash範圍在當前請求和通話之後存在。如果我使用正常表單並提交所有工作,但我想使用ajax和呈現模板,所以我不必經常重複代碼。
編輯1 首先渲染index.gsp。 remoteForm使用包含flash.messages的模板更改seachBlock div。他們沒有填充。
Grails版本1.3.7目前無法升級。
編輯2 異常e,不是異常,這是我原來拋出的異常。該消息爲空,導致消息爲空......
這是一個錯字嗎?你的控制器正在填充「flash.message」,但你的模板的測試是針對「flash.messages」 – 2012-01-12 20:28:52