2010-11-24 2 views
4

GrailsアプリケーションではservletContextが利用できますか?私はConfig.groovyでそれにアクセスしようとしましたが、うまくいきませんでした。ビューでアクセスすることもできません。GrailsでservletContextはどこにありますか?

storage = (File)servletContext["javax.servlet.context.tempdir"]を使用して、開発環境とテスト環境にアップロードされたファイルを格納するディレクトリとしてtempディレクトリを設定したいとします。

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 

答えて

1

あなたはどんなのcontrolerからそれにアクセスすることができ、私はconfに/ Config.groovyに次のように試してみましたバートのアドバイスに従い

。 bootstrap.groovyからアクセスできるかもしれませんが、私はそれを疑っています。 controlerからアクセスするたとえば、あなたはすでにそれへのアクセス権を持っていないコードにいる場合は、org.codehaus.groovy.grails.web.context.ServletContextHolder.getServletContext()を使用することができます http://www.grails.org/doc/latest/ref/Controllers/servletContext.html

+0

コントローラは、以前のように、Configのように、または私の場合はresource.groovyのように遅すぎます。 – mcv

2

を参照してください。

+0

私はそれを試しましたが、うまくいきません。上記の例を参照してください。 – deamon

+0

私は同じ問題を抱えています。私はresource.groovyでそれを必要としますが、ServletContextHolder.getServletContext()はnullを返します。 grailsApplication.mainContext.servletContextも動作しません。なぜなら、mainContextはまだ存在しないからです。 – mcv

関連する問題