2015-10-28 25 views
0

在我的應用程序中,我有搜索按鈕,並且基於搜索條件,我必須搜索數據。我用了很少的隱藏變量來存儲數據。點擊<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中獲得國家和分頁標誌的價值?任何人都可以解釋我嗎?非常感謝您的提前。

回答

0

問題是您正在使用常規HTML input標記而非Grails g:hiddenField標記。試試這個:

<g:form id="job" name="job" method="POST"> 
    <div> 
    <g:hiddenField name="country" value="${country}"/> 
    <g:hiddenField 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> 

提示

你也可以簡單地PARAMS分配:

def country = params.country ?: 'USA' 
def paginationFlag = params.paginationFlag ?: 'false' 

我也說不出哪裏paginationFlag從何而來,但要知道,一個boolean是有效的。

+0

非常感謝羅莎的回答。並感謝提示。由於我對groovy很陌生,這些提示對我有很大的幫助。我也嘗試使用。同樣的事情發生在我身上。當我的控件第二次進入控制器方法時(我認爲這是第二次調用ajax),params .country和params.pagination再次爲null。 – Ryan

+0

不客氣。確保'jobList'視圖從控制器獲取'country'和'paginationFlag'。然後確保第二次調用提供參數。 –

+0

我檢查了它。當控制進入視圖時,我可以獲取jobList和paginationFlag的值。但是當調試再次發送到控制器(第二次)時,我將這些值作爲空值。我發現一個選項是使用jobList和paginationFlag作爲控制器中的全局變量。但我認爲這可能會在稍後導致問題。 – Ryan

相關問題