5

chainこの機能を使用して他のメソッドを呼び出し、マージされたモデルをレンダリングしようとしています。これは私が呼び出す方法ですchain

コントローラー: emailToNotify、メソッド: sendEmailConfirmation

if (someCommandObject.hasErrors())
                chain(controller: "creditProvider", action: "rank", model: [emailToNotify: epnc, somethingToDisplay: "Boom !!!!"])

これは、rankメソッドがcreditProviderコントローラーでどのように終了するかです。

コントローラー: creditProvider、アクション: ランク

render (view: 'simulateResult', model: [bim : bam, boom : bimbamboom])

私は自分の見解から、${emailToNotify}または呼び出すことができません。${somethingToDisplay}simulateResult.gsp

私はchainこれとまったく同じ方法で以前に使用したことがありますが、正常に機能していました (そして現在も機能しています)。

モデルがビューに正しく渡されない理由はありますか?

いつものようにどんな助けも大歓迎です。ではごきげんよう、

4

2 に答える 2

11

chain最終アクションが a を返す場合にのみ機能し、最終アクションが呼び出しMapを使用する場合は機能しません。render実行していることを機能させるには、暗黙の変数chainModelを に戻すモデルと手動でマージする必要がありますrender

于 2011-10-05T16:37:39.853 に答える
1

私はこれで同じ問題を抱えていましたが、これを回避する 1 つの方法は、Spring ModelAndView オブジェクトを使用することであることがわかりました。最初のコントローラーから:

chain(controller: second, action: 'chainedMethod', model: [modelField2: '2'])

次に、secondController で:

import org.springframework.web.servlet.ModelAndView
...
def chainedMethod() {
  return new ModelAndView('/other/view', [modelField1: '1'])
}

これは Grails 2.1.1 を使用している私にとってはうまくいくので、他のバージョンでうまく動作するかどうかはわかりません。これが他の人に役立つことを願って、これを取得する前にいくつかの異なるルートを掘り下げて試してみる必要がありました.

于 2013-03-05T19:35:38.420 に答える