Grails newbie - 我正在尝试为我的select标记中的值属性创建URI(迭代域类的每个对象)。我尝试在我的标签中使用createLink标签,如下所示:
<g:select name="project.id" from="${Project.list(sort:'start', order:'desc')}" optionValue="${createLink(controller:'project',action:'show')}/${it.id}" noSelection="['null': 'select project']/>
显然我得到了GSP异常,这解释了“/ [mycontroller] / [myaction] / null”不是对象的属性。
有没有其他方法可以在<g:select>
内构建这些URI(例如<option value="/my/uri/">
而不诉诸循环并“手动”构建值?
答案 0 :(得分:3)
可以通过向Project域添加额外的方法来轻松完成:
class Project {
static transients = ['optionValue']
String getOptionValue() {
def g = ApplicationHolder.application.mainContext.getBean(
'org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')
return g.createLink(controller:'project',action:'show', id: id)
}
}
并将其用作:
<g:select name="project.id" from="${Project.list(sort:'start', order:'desc')}" optionValue="optionValue" noSelection="['null': 'select project']" />