在Grails中,要显示表格中的某些内容列表,我通常会执行以下操作:
我的控制器是
thingController {
def temp2 = something.findAllByXXX(yyy)
[temp : temp2]
}
在我看来,我有:
<g:each var="it" in="${temp}">
${it.someThing}
${it.someThingSomething}
<g:each>
我不知道这是否是最佳方法。是否有可能完成同样的事情,但不是调用所有对象,而是在gsp中迭代它们,在控制器端执行此操作。意思是,不是将所有对象传递给视图,而是传递单个对象。
答案 0 :(得分:2)
我不知道这是否是最佳方法。是否有可能完成同样的事情,但不是调用所有对象,而是在gsp中迭代它们,在控制器端执行此操作。意思是,不是将所有对象传递给视图,而是传递单个对象
我认为我不明白你的建议作为上述代码的替代方案。但是AFAIK上面的代码是在GSP中显示项目列表的最常见方式,所以除非它导致您遇到特定问题,否则我不会费心寻找替代方案。
答案 1 :(得分: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>