コントローラからビューにデータを渡すためのいくつかのGrails規約文書を読むにもかかわらず、少し不透明です。いくつかの基本的な質問:ここでGrailsレンダリングvコントローラにデータを渡すためのコントラクト
はいくつかの質問です:
1)「人のコントローラ用に作成された足場で、indexアクションはindex.gspに
respond Person.list(params) model:[personCount: Person.count()]
でで終わり、リストはブラウザを使ってレンダリングされます:
<f:table collection="${personList}" />
私の質問はどこから来ましたか?別の言い方をすれば、コントローラ内のPerson.list(...)の出力はpersonListという名前のビューにどのように表示されましたか?あなたは
respond foo
を呼び出し、fooが、それは「fooList」の名称で、コントローラに表示されます、リストである場合について一般化ルールはありますか?
2) "render foo"と言うだけでコントローラにオブジェクトを提供できる場合は、modelパラメータの目的は何ですか?すなわち
respond foo
と
respond model:[foo: foo]
の両方を使用してビューにアクセスできるのと同じように思え間にいくつかの違いがあります"${foo}"
3)最後に、差の簡潔な説明が何でありますか"応答する"と "レンダリングする"?どちらもコントローラからビューにデータを配信するようです。
もし私の慰めがあれば、私は内部的な魔法を使うという点で非常に難解です。あなたの事例が正確に例に従わない場合、何が起こっているのか、どのように使用するのか分かりません。例えば。私は2つのオブジェクトで応答したいと思います。ドキュメントでは単一のオブジェクトをパラメータ(+引数のパラメータ)として渡すことしかできないので、これを行う方法はわかりません。追加のオブジェクトを渡すために引数パラメータを使用する必要がある場合、またはオブジェクトが2つある場合はオブジェクトの代わりに引数パラメータを使用する必要がある場合は、混乱させます。私は応答文書を読んで、レンダリングに多くの時間を節約するデバッグ –
興味深いことに、私は数百のJSON APIと数千のUIコントローラをGrailsに書いています。 APIコントローラのメソッドと出力とUIコントローラのメソッドが重なっている状況がほとんどありませんでしたので、私の場合は応答が役に立たないでしょう。 –