【问题标题】:Access Spring beans in GSP without controller在没有控制器的情况下访问 GSP 中的 Spring bean
【发布时间】:2023-03-25 04:27:01
【问题描述】:

我在 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。谢谢!

【问题讨论】:

    标签: spring grails gsp


    【解决方案1】:

    你也可以用你的 bean 作为值来创建变量:

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

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

    ${testBean.name}
    

    这比创建自定义TagLib 快一点。

    【讨论】:

      【解决方案2】:

      您可以为该工作创建一个TagLib,然后调用您的 gsp。

      标签库

      class MyTagLib {
        static namespace = "my"
      
        def test  
      
        def myTag = { attrs, body ->
          out << test.name
        }
      
      }
      

      观点

      <my:myTag />
      

      【讨论】:

        猜你喜欢
        • 2014-12-23
        • 1970-01-01
        • 2019-09-20
        • 1970-01-01
        • 1970-01-01
        • 2015-03-30
        • 2020-01-04
        • 2021-02-06
        • 1970-01-01
        相关资源
        最近更新 更多