我会说这完全取决于您的使用组织,但通常我会尽量减少每次渲染调用的模型中的条目数。
如果您有一部分页面需要显示 a、ab 和 abc 的一部分,那么将它们作为对“a”的单个引用传递似乎没问题。
如果您正在显示的页面有不同的部分,一个部分指的是 a,另一个是 ab,另一个是 abc,那么我建议您查找模板(http://www.slideshare.net/laelfrog/grails -layouts-sitemesh),并将“a”传递到顶部,并将“ab”从该顶级页面传递到使用ab作为“b”的部分模板中,等等。
所以如果你的控制器有:
render( view: 'index', model: [a:a] )
index.gsp 可能看起来像:
<g:render template="toplevel" model="[a: a]" />
<g:render template="midlevel" model="[b: a.b]" />
<g:render template="bottomlevel" model="[c: a.b.c]" />
然后,在模板_toplevel 中,可以使用“a”(实际上,对于这个级别,传递模型是多余的,因为当前模型与控制器发送的模型相同)。
但是在 _midlevel 中,您可以将“ab”作为“b”访问,而在 _bottomlevel 中,您可以将 abc 作为“c”访问。每个模板都应该知道它需要什么,并且应该为这些东西真正拥有自己的名称,而不是依赖于 2 中的模型渲染链。
就优化而言,我怀疑这是一个问题,除非你一遍又一遍地重新做很多工作来构建你的模型。只是取消引用孩子并不是真正的问题。