2011-11-15 69 views
0

Grails中,在表格中顯示的東西的清單,我通常做到以下幾點:Grails的迭代對象在控制器

我控制器

thingController { 

def temp2 = something.findAllByXXX(yyy) 

[temp : temp2] 
} 

在我看來,我有:我不知道這是不是最好的方法。是否有可能做到這一點完全相同的事情,但不是調用所有的對象,然後在gsp迭代他們,做到這一切所有的控制器端。意思是,不是將所有對象傳遞給視圖,而是傳遞單個對象。

+0

似乎也不可能,因爲控制器不能調用'渲染()比'更多每次請求一次。 – ig0774

回答

2

我不知道這是否是最好的方法。是否有可能做到這一點完全相同的事情,但不是調用所有的對象,然後在gsp迭代他們,做到這一切所有的控制器端。意思是,而不是將所有對象傳遞給視圖,傳遞單個對象

我不認爲我理解你的建議作爲上述代碼的替代方案。但是,AFAIK上面的代碼是在GSP中顯示項目列表的最常見方式,所以除非它導致您遇到特定問題,否則我不打算尋找替代方案。

+0

好的,非常感謝。有時候,我懷疑要做某些事情的最好方法,並且不管怎麼樣,可以有更簡單更好的方法來做到這一點,而且我一直在學習:如果沒有更好的方法,我會接受答案:p – recoInrelax

0

這是可能的,但我不認爲這是一個好主意,除非它是出於一個非常具體的原因。例如,如果您始終希望查詢中有兩個對象,並且它們需要以不同的方式顯示,那麼您可能需要使用像[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>