【问题标题】:How do you Access Grails ServletContext in a gsp file?如何在 gsp 文件中访问 Grails ServletContext?
【发布时间】:2010-12-13 18:36:37
【问题描述】:

我有一个类别列表,这些类别需要存在于应用程序的 servletContext 范围内,因为每个视图都可以访问该列表并且不需要修改。

我尝试在 BootStrap.groovy 的 init 方法中设置一个新的 servletContext 属性,但我似乎无法访问 gsp 文件中的 servletContext。

这是我正在尝试的。如何从 gsp 文件访问 servletContext(应用程序)范围属性?

import org.codehaus.groovy.grails.commons.ApplicationHolder as AH import java.util.List import java.util.ArrayList class BootStrap { def init = { servletContext -> def dataSource = AH.application.mainContext.dataSource List categories def sql = new Sql(dataSource); def rows = sql.rows("select distinct catgry from cmpitmms"); categories = new ArrayList(); for (arg in rows) { println arg.getAt(0) if (!arg.getAt(0).trim().equals("")) { categories.add(arg.getAt(0).trim()); } } servletContext.categories = categories } def destroy = { } }

这是我试图在 gsp 文件中访问它的地方。

<ul>
    <g:each var="category" in="${servletContext.categories}">
        <li><a href="category/${category}" title="${category}">${category}</a></li>
    </g:each>
</ul>

【问题讨论】:

    标签: grails scope gsp servlets


    【解决方案1】:

    找到了!

    代替

    servletContext.categories = categories
    

    servletContext.setAttribute("categories", categories)
    

    然后在gsp中使用

    <g:each var="category" in="${application.categories}">
       <li><a href="category/${category}" title="${category}">${category}</a></li>
    </g:each>
    

    【讨论】:

      【解决方案2】:

      你仍然可以使用

      servletContext.categories = categories
      

      并在 gsp 中使用

      <g:each var="category" in="${application.categories}">
         <li><a href="category/${category}" title="${category}">${category}</a></li>
      </g:each>
      

      不需要将其设置为属性

      【讨论】:

        猜你喜欢
        • 2014-06-15
        • 1970-01-01
        • 1970-01-01
        • 2012-04-04
        • 2011-09-20
        • 2023-03-13
        • 2013-05-02
        • 2023-03-15
        • 1970-01-01
        相关资源
        最近更新 更多