<g:select>标签中的createLink表达式</g:select>

时间:2011-07-28 10:14:32

标签: grails

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/">而不诉诸循环并“手动”构建值?

1 个答案:

答案 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']" />