2010-12-13 2 views
1

私はリストがすべてのビューによってアクセスされ、変更する必要がないので、アプリケーションのservletContextスコープの内部に存在しなければならないカテゴリのリストを持っています。gspファイルでGrails 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> 

答えて

3

見つけました!

代わりの

servletContext.categories = categories 

あなたはまだ使用することができGSP使用

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

に続いて

servletContext.setAttribute("categories", categories) 

を行い

servletContext.categories = categories 
属性として設定

とGSP使用中の

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

を必要とされていません
関連する問題