我有一个g:select语句,如下所示:
<g:select id="gearbox" name="gearbox.id" from="${com.nppc.mes.energyusage.Gearbox.list()}" optionKey="id" optionValue="${ {"${it.gearboxType} - (${it.gearboxRatio})"} }" required="" value="${gearboxVoltageInstance?.gearbox?.id}" class="many-to-one"/>我添加了一个optionValue属性:optionValue="${ {"${it.gearboxType} - (${it.gearboxRatio})"} }"
这就是我想要的效果。
然而,我想要显示我的域对象,齿轮箱在任何地方都是一样的。我已经创建了一个模板,并且能够在我的show.gsp上使用g:render标记。
我不明白的是如何让这样的东西工作:
optionValue="<g:render template="/shared/gearbox" model:="[gearbox:it]"/>"
是否可以使用模板来生成optionValue中的内容?
发布于 2012-07-28 08:47:07
你可以绕过它,但对我来说这是一个糟糕的设计。
做类似的事情的正确方法似乎是在Gearbox域类中添加一个helper方法
static transients = [ 'renderedValue' ]
def getRenderedValue(){
"$gearboxType - $gearboxRatio"
}然后,您可以只调用optionValue="${ it.renderedValue }“。
此外,如果您在域类中指定了toString(),这将用于生成默认的渲染值。
发布于 2012-07-30 22:46:18
标签可以用作Groovy代码中的常规函数。像这样:
optionValue="${g.render(template: '/shared/gearbox', model: [gearbox: it])}"https://stackoverflow.com/questions/11691761
复制相似问题