Spring нулевой контекст приложения в JSP - PullRequest
2 голосов
/ 08 ноября 2011

Я пытаюсь получить контекст приложения на моей странице JSP.У меня есть следующий скриптлет в JSP.

       WebApplicationContext appCtx = WebApplicationContextUtils.getRequiredWebApplicationContext(config.getServletContext()); 
       MyClass myClass = (MyClass)(appCtx.getBean("myClass"));

При использовании этого исключение нулевого указателя генерируется для контекста приложения.Что я здесь не так делаю?У меня нет файла application-context.xml, потому что он мне не нужен.У меня есть обычный dispatcher-servlet.xml с сопоставлениями обработчиков.

Кроме того, как дополнительная информация: я пытаюсь получить доступ к этому объекту "myClass", который внедряется с помощью PropertyPlaceholderConfigurer, который читает из внешних переменных среды и внедряетв "мой класс".Любые указатели?

Обновление:

Я пытался использовать «RequestContextUtils», как предложено, но сейчас получаю «Исключение WebApplicationContext: не в запросе DispatcherServlet».JSP, в котором я пытаюсь получить доступ к компоненту, является точкой входа в приложение.Мой распознаватель представлений выглядит следующим образом:

    <bean id="viewResolver"
    class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix">
        <value>/WEB-INF/views/</value>
    </property>
    <property name="suffix">
        <value>.jsp</value>
    </property>
    <property name="exposedContextBeanNames">
        <value>myClass</value>
    </property>
   </bean> 

JSP, к которому я пытаюсь получить доступ, находится за пределами этой папки "views".Пожалуйста, сообщите

1 Ответ

4 голосов
/ 08 ноября 2011

WebApplicationContextUtils.getRequiredWebApplicationContext() возвращает контекст приложения, связанный с ContextLoaderListener (то есть applicationContext.xml).

Чтобы получить контекст, связанный с DispatcherServlet, необходимо вызвать RequestContextUtils.getWebApplicationContext(request).

* 1009.* В качестве альтернативы, вы можете настроить InternalResourceViewResolver для представления компонентов в качестве атрибутов.Затем вы можете получить доступ к bean-компонентам в JSP как ${myClass}.Вы можете выставить все bean-компоненты, установив exposeContextBeansAsAttributes в true (я думаю, что это повлечет за собой некоторое снижение производительности), или явным образом перечислить bean-компоненты, которые будут отображаться с exposedContextBeanNames.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...