Где servletContext доступен в Grails? - PullRequest
4 голосов
/ 24 ноября 2010

Где servletContext доступно в приложении Grails?Я пытался получить доступ к нему в Config.groovy, но это не сработало.Доступ к нему в представлении также невозможен.

Я хочу установить временный каталог в качестве каталога для хранения загруженных файлов в моей среде разработки и тестирования с помощью storage = (File)servletContext["javax.servlet.context.tempdir"].

Следуя совету Берта.Я попробовал следующее в conf / Config.groovy:

environments {
    production {
        grails.serverURL = "http://demo.com"
    }
    development {
        grails.serverURL = "http://localhost:8080/${appName}"
        storageDir = org.codehaus.groovy.grails.web.context.ServletContextHolder
            .getServletContext()["javax.servlet.context.tempdir"]
    }
    test {
        grails.serverURL = "http://localhost:8080/${appName}"
    }

}

... но получаю эту ошибку:

java.lang.NullPointerException: Cannot get property 'javax.servlet.context.tempd
ir' on null object
        at Config$_run_closure1_closure4.doCall(Config.groovy:59)
        at Config$_run_closure1_closure4.doCall(Config.groovy)
        at Config$_run_closure1.doCall(Config.groovy:57)
        at Config$_run_closure1.doCall(Config.groovy)
        at Config.run(Config.groovy:53)
        at _GrailsPackage_groovy$_run_closure1.doCall(_GrailsPackage_groovy:52)
        at _GrailsPackage_groovy$_run_closure2_closure10.doCall(_GrailsPackage_g
roovy:93)
        at _GrailsPackage_groovy$_run_closure2_closure10.doCall(_GrailsPackage_g
roovy)
        at _GrailsSettings_groovy$_run_closure10.doCall(_GrailsSettings_groovy:2
80)
        at _GrailsSettings_groovy$_run_closure10.call(_GrailsSettings_groovy)
        at _GrailsPackage_groovy$_run_closure2.doCall(_GrailsPackage_groovy:92)
        at RunApp$_run_closure1.doCall(RunApp.groovy:28)
        at gant.Gant$_dispatch_closure5.doCall(Gant.groovy:381)
        at gant.Gant$_dispatch_closure7.doCall(Gant.groovy:415)
        at gant.Gant$_dispatch_closure7.doCall(Gant.groovy)
        at gant.Gant.withBuildListeners(Gant.groovy:427)
        at gant.Gant.this$2$withBuildListeners(Gant.groovy)
        at gant.Gant$this$2$withBuildListeners.callCurrent(Unknown Source)
        at gant.Gant.dispatch(Gant.groovy:415)
        at gant.Gant.this$2$dispatch(Gant.groovy)
        at gant.Gant.invokeMethod(Gant.groovy)
        at gant.Gant.executeTargets(Gant.groovy:590)
        at gant.Gant.executeTargets(Gant.groovy:589)
Failed to compile configuration file: Cannot get property 'javax.servlet.context
.tempdir' on null object

Ответы [ 2 ]

2 голосов
/ 24 ноября 2010

Вы можете использовать org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext(), если вы находитесь в коде, который еще не имеет к нему доступа.

1 голос
/ 24 ноября 2010

Вы можете получить к нему доступ из любого контроллера. Вы можете получить к нему доступ из bootstrap.groovy, но я сомневаюсь в этом. Пример доступа к нему из контроллера см. http://www.grails.org/doc/latest/ref/Controllers/servletContext.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...