【发布时间】:2019-03-29 18:06:53
【问题描述】:
我的类结构为:
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])
}
}
另一个定义了模板,生成一个空对象。
【问题讨论】:
-
“空对象”是否意味着 JSON 看起来像
{}或其他? -
@JeffScottBrown 完全正确