Grails 如何在g:select for optionValue中使用g:render?
我有一个g:select语句,如下所示:Grails 如何在g:select for optionValue中使用g:render?,grails,Grails,我有一个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
<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=”“
是否可以使用模板生成进入optionValue的内容?你可以绕过它,但我觉得这是一个糟糕的设计 正确的方法是向您的域类添加一个helper方法
static transients = [ 'renderedValue' ]
def getRenderedValue(){
"$gearboxType - $gearboxRatio"
}
然后,只需调用optionValue=“${it.renderedValue}”
此外,如果在域类中指定toString(),这将用于生成默认渲染值 标记可以用作Groovy代码中的常规函数。比如:
optionValue="${g.render(template: '/shared/gearbox', model: [gearbox: it])}"
thx-这起作用了。只是需要保留语法“${…}}”,以使其正常工作。不确定为什么需要额外的卷发,但当我添加它们时,它会起作用。:-)您是否提供在域方法中呈现模板作为更好的设计?