1

リストはすべてのビューからアクセスされ、変更する必要がないため、アプリの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>
4

2 に答える 2

3

それを見つけた!

それ以外の

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>
于 2010-12-13T20:07:16.443 に答える
2

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

servletContext.categories = categories

そしてgspの使用で

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

属性として設定する必要はありません

于 2011-10-02T17:00:46.257 に答える