2011-11-15 11 views
0

内のオブジェクトを反復、私は通常、次のようにします。Grailsは、テーブルで何かのリストを表示するには、コントローラのGrailsでは

私のコントローラは

thingController { 

def temp2 = something.findAllByXXX(yyy) 

[temp : temp2] 
} 

そして、私の見解では、私が持っています:

<g:each var="it" in="${temp}"> 
${it.someThing} 
${it.someThingSomething} 
<g:each> 

これが最善のアプローチであるかどうかわかりません。これはまったく同じことをすることは可能ですが、すべてのオブジェクトを呼び出すのではなく、gspで反復処理を行うのではなく、すべてのコントローラ側で行います。つまり、すべてのオブジェクトをビューに渡すのではなく、単一のオブジェクトを渡します。

+0

をリクエストごとに1回 – ig0774

答えて

2

これが最善のアプローチであるかどうかわかりません。これはまったく同じことをすることは可能ですが、すべてのオブジェクトを呼び出すのではなく、gspで反復処理を行うのではなく、すべてのコントローラ側で行います。意味、すべてのオブジェクトをビューに渡すのではなく、単一のオブジェクトを渡す

私は上記のコードの代わりにあなたの提案を理解していないと思います。しかし、上記のAFAIKコードは、GSPの項目リストを表示する最も一般的な方法です。特定の問題を引き起こさない限り、代替案を探すのは難しくありません。

+0

よろしくお願いいたします。時々、私はある種のことをするための最良のアプローチについて疑問を持ち、それを働かせて、それを行うためのより簡単で良い方法があるかもしれません。私はいつも学んでいます:p良い方法がないなら、答え:p – recoInrelax

0

非常に具体的な理由がない限り、私はそれは良い考えではないと思います。たとえば、クエリから2つのオブジェクトが常に期待され、表示が異なる必要がある場合は、[object1: temp2[0], object2: temp2[1]]のようなモデルを使用することができます。

反復の混乱を避けるためにビューを構造化する良い方法は、テンプレートを使用することです。あなたは、このようなビューを持つことができます。

<g:each var="it" in="${temp}"> 
    <g:render template="someThing" model="[someThingInstance: it]"/> 
</g:each> 

そして、単一のオブジェクト表示のテンプレート_someThing.gsp:コントローラは(レンダリング `を呼び出すことはできませんとしてより多くの`)、可能性は思えない

<div>${someThingInstance.field1}</div> 
<div>${someThingInstance.field2}</div> 
関連する問題