在我的應用程序中,我有搜索按鈕,並且基於搜索條件,我必須搜索數據。我用了很少的隱藏變量來存儲數據。點擊<g:actionSubmit>按鈕時控制器中的params值始終爲空。
我.gsp頁面看起來是這樣的:
<g:form id="job" name="job" method="POST">
<div>
<input type="hidden" id="country" name="country" value="${country}"/>
<input type="hidden" id="paginationFlag" name="paginationFlag" value="${paginationFlag}"/>
<!-- There are other components like text field, select box etc -->
<g:actionSubmit id="Search" value="Search" formmethod="post" action="findJob"/>
</div>
</g:form>
我相應的控制器方法是這樣的:
def findJob(){
def country
def paginationFlag
if(params?.country){
country = params?.country
}else{
country = 'USA'
}
if(params?.paginationFlag){
paginationFlag = params?.paginationFlag
}else{
paginationFlag = 'false'
}
withFormat{
html{
List<Applicant> searchList //get data from database.
// other business logic
render(view : "jobList",model:[paginationFlag: paginationFlag, country:country])
}
json{
// some business logic
def candidateList // value for this candidateList is acquired from database
def json = ['jsn': candidateList]
render json as JSON
}
}
當我點擊搜索按鈕和調試代碼,首先我就進入到控制器 - > findJob()方法並執行html部分內的代碼。 其次,它進入gsp頁面(查看頁面)並設置值。第三,它再次進入控制器並執行json部分內部的代碼。
在控制器的第一個條目中,paginationFlag和param中的國家的值都爲空。因此它將分別設置值'false'和'USA'。但是當控制第二次再次進入控制器時,param.paginationFlag和params.country的值爲空。他們不應該有指定的值嗎?
這是爲什麼?我應該怎麼做第二次在params中獲得國家和分頁標誌的價值?任何人都可以解釋我嗎?非常感謝您的提前。
非常感謝羅莎的回答。並感謝提示。由於我對groovy很陌生,這些提示對我有很大的幫助。我也嘗試使用。同樣的事情發生在我身上。當我的控件第二次進入控制器方法時(我認爲這是第二次調用ajax),params .country和params.pagination再次爲null。 –
Ryan
不客氣。確保'jobList'視圖從控制器獲取'country'和'paginationFlag'。然後確保第二次調用提供參數。 –
我檢查了它。當控制進入視圖時,我可以獲取jobList和paginationFlag的值。但是當調試再次發送到控制器(第二次)時,我將這些值作爲空值。我發現一個選項是使用jobList和paginationFlag作爲控制器中的全局變量。但我認爲這可能會在稍後導致問題。 – Ryan