我有一个类结构:
class A {
...
}
class B extends A {
...
}
class C extends A {
...
}
不,在控制器中,我正在获取混合类型的对象列表:
A[] objects = bethodTpFetchTheList()
在视图中,我需要渲染整个列表,但是我需要为不同的类型使用不同的模板。
甚至可能吗?
当我有单一类型时,我曾经以这种方式呈现 json:
json tmpl.object(objects)
有没有办法手动遍历列表并根据类型做出决定?
一些进展 所以我得到了这个:
json utilizations, { ToolUtilization utilization ->
if (utilization.type == ToolType.TOOL_40_PRINCIPLES) {
tmpl.'/fortyPrinciplesUtilization/utilization'(utilization)
} else if (utilization.type == ToolType.RRM){
tmpl.'/rrmUtilization/utilization'(utilization)
}
}
它有点工作,但它呈现空对象......
更多进展
似乎如果我使用g.inline
它部分工作,但它不会拾取模板。所以,如果我这样做:
json(utilizations) { ToolUtilization utilization ->
if (utilization.type == ToolType.TOOL_40_PRINCIPLES) {
g.inline(utilization) <= here it renders the object with a default renderer.
} else if (utilization.type == ToolType.RRM){
g.inline(template:'/rrmUtilization/utilization', model:[utilization: utilization])
}
}
另一个定义了模板,产生一个空对象。