Grails перебирает объекты в контроллере - PullRequest
0 голосов
/ 15 ноября 2011

В Grails, чтобы отобразить список чего-либо в таблице, я обычно делаю следующее:

Мой контроллер

thingController {

def temp2 = something.findAllByXXX(yyy)

[temp : temp2]
}

И, на мой взгляд, у меня есть:

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

Я не знаю, является ли это лучшим подходом. Можно ли сделать это точно так же, но вместо того, чтобы вызывать все объекты, а затем в gsp итерировать по ним, делать это все на стороне контроллера. Это означает, что вместо передачи всех объектов в представление, передайте отдельные объекты.

Ответы [ 2 ]

2 голосов
/ 15 ноября 2011

Я не знаю, является ли это лучшим подходом. Можно ли сделать это точно так же, но вместо того, чтобы вызывать все объекты, а затем в gsp итерировать по ним, делать это все на стороне контроллера. Это означает, что вместо передачи всех объектов в представление, передайте отдельные объекты

Не думаю, что я понимаю, что вы предлагаете в качестве альтернативы вашему коду выше. Но AFAIK приведенный выше код является наиболее распространенным способом отображения списка элементов в GSP, поэтому, если это не вызывает особых проблем, я не стал бы искать альтернативы.

0 голосов
/ 15 ноября 2011

Это возможно, но я не думаю, что это хорошая идея, если только по очень конкретной причине.Например, если вы всегда ожидаете, что два объекта в вашем запросе будут отображаться по-разному, вам может потребоваться модель типа [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>
...