2012-12-14 64 views
0

我在頁面加載時遇到了一些自動重定向問題。防止從頭開始重定向

這是我的代碼:

def editUser = { 
    if(params.account_expired != null) 
    { 
    String updateQuery = "UPDATE user SET expired='"+params.account_expired+"'" 


    def update = sql.executeUpdate(updateQuery) 
    redirect (action: listUser) 
    [update:update] 


    } 

    else 
    { 

    } 
} 

所以發生什麼事,當得到加載頁面時,它自動重定向回LISTUSER頁。這實際上是一個edituser頁面,我希望它留在那裏,直到用戶點擊一個按鈕。然後重定向到listuser。任何想法的傢伙?

+0

就像一個建議,你不應該使用groovy sql。擊敗Grails應用程序獨立於數據庫的全部目的。你也很容易使用上面的代碼進行sql注入。切換到使用HQL或GORM方法。 –

回答

0

通常使用POST方法發送update和GET來顯示錶單(如W3C所示,默認情況下在Grails中使用)。所以,你可以使用:

def editUser = { 
    if (request.method == 'GET') { 
    render(view: 'editUser') 
    } else if (request.method == 'POST') { 
    //.... current code 
    } 
} 

默認的Grails創建POST形式,當你使用<g:form標籤,但如果你使用普通的HTML標記,應指定POST方法爲:

<form method="POST"> 

</form> 
0

這正是你的代碼是應該做的,因爲你有這樣的執行:

redirect (action: listUser) 

如果你想讓它留在editUser頁面,你應該將其刪除。然後

[Query1:Query1] 

將呈現editUser.gsp並傳遞此參數。

+0

那麼,如何將自己重定向到listuser頁面而不是保留在同一頁面中。 – user1681961

+0

您無法同時呈現頁面和重定向到另一個頁面。你的目的是:「我希望它留在那裏,直到用戶點擊一個按鈕。」所以把一個鏈接或一個表單提交按鈕「[action:'listPage']」參數。 – coderLMN

+0

如果您要以示例向我展示答案,可以嗎?這也會使其他用戶受益。我會在同一時間自行嘗試。 – user1681961