Grails 2.0 и servletContext - PullRequest
       5

Grails 2.0 и servletContext

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

Я пытаюсь получить доступ к servletContext в контроллере следующим образом, но продолжаю получать исключение нулевого указателя:

def servletContext = getServletContext()
def serverPath  = servletContext.getRealPath("/")

... Однажды я сталкивался с этой проблемой в списках рассылки только недавно, но единственный «правильный» обходной путь, который был предложен, - это установить его при закрытии инициализации в BootStrap.groovy:

   import org.codehaus.groovy.grails.web.context.ServletContextHolder as SCH

class BootStrap {

    def init = { servletContext ->

         SCH.servletContext = servletContext
    }
....

... это все еще так? Это решение не имело никакого значения для меня, все еще получил NPE

Заранее спасибо

1 Ответ

5 голосов
/ 24 ноября 2011

servletContext - это пружинный компонент, который будет автоматически введен, если вы объявите def servletContext в своем контроллере.

Держатели предметов уходят. Рекомендуемый способ получить доступ к ServletContext или ApplicationContext - это использование пружинного компонента grailsApplication. В ситуациях, когда вы не можете получить доступ к grailsApplication (например, статическим методам), вы можете создать свои собственные классы-держатели.

Берт Беквит написал пару отличных постов в блоге на эту тему: Доступ к GrailsApplication и ApplicationContext из классов доменов без держателей и Создание собственного класса держателей Grails .

...