2011-10-24 12 views
0

コントローラーのグレーズでリダイレクションに問題があります。コントローラーでgrailsリダイレクトエラー

:searchNameで

def function1 = { 

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

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

、パラメーターはありません。それは空リストです。 リダイレクトを呼び出す2番目の方法を試して、存在するメソッドに対して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リダイレクトです。すべてのパラメータは直列化され、型情報が失われている可能性があります(例:日付、リダイレクト後の文字列)。

最初のバージョンでは名前パラメータは無視されます。あなたはパラメータを引用していなかったので、Groovyのは、それらが変数であることを期待し、それらを解決しようとする

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

を試してみてください

に。params以内であること。両方が定義されていないので、それはparams: [null: null]になってきている。

しかし、私はあなたがrender(view: "searchName", params: ["name": "test"])を探していると推測します。これはHTTPリダイレクトを行いません。

+0

私は以前は分かりませんでした。 – winna

+0

私はパラメータ名を引用しなかったので、それに応じて応答を更新しました。 – Chris

+0

私は骨頭のために自分自身を撃つつもりです – winna