2

いくつかのコントローラー、ビュー、およびレイアウトを持つアプリケーションがあります。基本的に、コントローラーからビューにデータを渡そうとしています。問題のビューは、layouts フォルダー内の main.gsp というレイアウトを使用します。そこで、データをビューに渡そうとするために、以下のコードを使用しました。

def index = {

        String test = "Testing"
                println(test)
        render(view:"index", name: test)
    }

次に、ビューでは次のようになります。

<html>

<head>
    <title>My App</title>
    <meta name="layout" content="main" />
</head>

<body>

        <h1>${name}</h1>
.......

次に、アプリケーションを実行すると、印刷データは正常であることがわかりますが、ビューにデータが渡されていません。これは、レイアウトが使用されているためですか? もしそうなら、どうすればこれを回避できますか?代わりにメタ オブジェクトにアクセスしますか? 前もって感謝します :-)

4

2 に答える 2

4

これを試して:

def index = {
    String test = "Testing"
    println(test)
    [name: test]
}

indexこれにより、慣例に従ってビューがレンダリングされます。

modelコントローラーからビューに (マップ) を渡す必要があります。

ビュー内で返されたマップの要素を使用できるようになりました。

<h1>${name}</h1>

詳細については、ドキュメントを参照してください。

于 2012-10-30T13:03:42.517 に答える
1

aiolos の例は正しいですが、モデル内のデータでメソッド render() を本当に使用する必要がある場合は、次のように呼び出す必要があります。

render( view:'index', model: [ 'name':test ] )
于 2012-10-30T13:09:48.667 に答える