4

我在 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} 为空。那么,如何在没有控制器的情况下访问 GSP 中的 TestBean?

我正在使用 Grails 2.2。谢谢!

4

2 回答 2

5

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

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

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

${testBean.name}

它比创建 custom 快一点TagLib

于 2014-07-18T07:30:26.267 回答
4

You can create a TagLib to to that job, and just call in your gsp.

The TagLib

class MyTagLib {
  static namespace = "my"

  def test  

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

}

The View

<my:myTag />
于 2013-04-29T01:09:35.093 回答