在没有控制器的GSP中访问Spring bean

时间:2013-04-29 00:55:42

标签: spring grails gsp

我在resources.groovy中定义了Spring bean。 我可以在控制器中访问它们。 我在视图中也有一些没有控制器的GSP。 我想知道如何像在JSF中的EL表达式一样访问GSP中的bean?

例如,给定这样的域类:

class TestBean {  
  def name = "hello"
}

在spring / resources.groovy:

test(mydomain.TestBean) { bean -> bean.scope = 'session' }

在UrlMapping.groovy中:

 '/test'(view:'/test')

然后,在views / test.gsp中:

  ${test.name}

但是上面的代码会引发异常,因为$ {test}为null。那么,如何在没有控制器的情况下在GSP中访问TestBean?

我正在使用Grails 2.2。谢谢!

2 个答案:

答案 0 :(得分:5)

您还可以使用bean创建变量值:

<g:set var="testBean" bean="test"/>

然后使用(在* .gsp中):

${testBean.name}

比创建自定义TagLib要快一些。

答案 1 :(得分:4)

您可以为该作业创建TagLib,只需拨打您的gsp。

TagLib

class MyTagLib {
  static namespace = "my"

  def test  

  def myTag = { attrs, body ->
    out << test.name
  }

}

视图

<my:myTag />