2011-10-24 106 views
0

在控制器中的grails中重定向的問題。grails重定向錯誤

在控制器:

def function1 = { 

     ... do stuff ... 
     ... go to service ... 

     redirect(action: "searchName", name: test) 
     //redirect(action: "searchName", params: [ name: test ]) 
    } 
在searchName

,沒有參數。它是一個空的列表。 嘗試調用重定向的第二種方式,並且我得到grails exceions(MissingMethodException),對於確實存在的方法。

沒有什麼特別的,我可以看到,這是繼續。

有幫助嗎?

EDIT

的MissingMethodException不在searchName功能,但在該服務內的方法。這個方法就在那裏。

如果我使用第一個重定向方法,那麼服務方法工作正常,但重定向到searchName包含空參數。 如果我切換重定向方法,那麼服務方法不再工作 (除了例外,所以它永遠不會到重定向)。完全重新編譯/清除代碼。

另外,searchName是一個閉包。再次,沒有什麼幻想。 獲取名稱參數,並使用它。

class MyWierdController { 
def function1 = { 
    ... do stuff ... 
    ... go to service ... 
    String test="blah" 
    redirect(action: "searchName", name: test) 
} 

def searchName = { 
    if (params.name) { 
    log.info "its there" 
    } else { 
    log.info "its not there" 
    } 

} 
} 
+0

你在使用Grails 2.0嗎? –

+0

grails 1.3.7 - 對不起。應該早些提到過 – winna

+0

在調用'function1'動作之後你有什麼http響應? –

回答

0

redirect()是一個真正的HTTP重定向。你將會遇到問題,因爲你所有的參數都會被序列化,並且可能會丟失類型信息(例如日期,在重定向後將會是字符串)。

第一個版本將忽略名稱參數,因爲所有參數都必須是內params

嘗試

redirect(action: "searchName", params: ["name": "test"]); 
// or 
redirect(action: "searchName", params: params); 

既然你沒有引用參數,常規期望他們是一個變量,並試圖解決這些問題。因爲這兩個都是不確定它正在成爲params: [null: null]

但是我想,你正在尋找render(view: "searchName", params: ["name": "test"]),它不會做HTTP重定向。

+0

我之前並不清楚。更新問題 – winna

+0

我更新了相應的響應 – Chris

+0

這是因爲我沒有引用參數名稱。我要去拍自己的頭腦 – winna