Grails迭代控制器中的对象
在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
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>