Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Grails迭代控制器中的对象_Grails_Loops_Controllers - Fatal编程技术网

Grails迭代控制器中的对象

Grails迭代控制器中的对象,grails,loops,controllers,Grails,Loops,Controllers,在Grails中,要在表中显示某些内容的列表,我通常会执行以下操作: 我的控制器是 thingController { def temp2 = something.findAllByXXX(yyy) [temp : temp2] } 我认为: <g:each var="it" in="${temp}"> ${it.someThing} ${it.someThingSomething} <g:each> ${it.someThing} ${it.something

在Grails中,要在表中显示某些内容的列表,我通常会执行以下操作:

我的控制器是

thingController {

def temp2 = something.findAllByXXX(yyy)

[temp : temp2]
}
我认为:

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

${it.someThing}
${it.something something}
我不知道这是不是最好的办法。是否可以执行完全相同的操作,但不必调用所有对象,然后在gsp中对它们进行迭代,而是在所有控制器端执行此操作。也就是说,不是将所有对象传递给视图,而是传递单个对象

我不知道这是不是最好的办法。是否可以执行完全相同的操作,但不必调用所有对象,然后在gsp中对它们进行迭代,而是在所有控制器端执行此操作。也就是说,不是将所有对象传递给视图,而是传递单个对象


我想我不明白你提出了什么作为上述代码的替代方案。但是,上面的代码是在GSP中显示项目列表的最常见的方式,因此,除非它给您带来了特定的问题,否则我不会费心寻找替代方案。

这是可能的,但我认为这不是一个好主意,除非是出于非常具体的原因。例如,如果您总是希望查询中有两个对象,并且它们需要以不同的方式显示,那么您可能希望有一个类似于
[object1:temp2[0],object2:temp2[1]]
的模型

构造视图以避免迭代混乱的一个好方法是使用模板。您可以看到如下视图:

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

好的,非常感谢。有时我对做某些事情的最佳方法有疑问,尽管它有效,但可能有更简单更好的方法,我一直在学习:p如果没有更好的方法,我会接受答案:p这似乎不可能,因为控制器不能对每个请求多次调用
render()
<div>${someThingInstance.field1}</div>
<div>${someThingInstance.field2}</div>