2011-01-24 2 views
2

Я использую Spring, Hibernate и JSF.FacesContextUtils.getWebApplicationContext (FacesContext.getCurrentInstance()) возвращает null

Для того, чтобы получить компонент из контекста приложения Я пишу:

public static Object findBean(String name) { 
    return FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()).getBean(name); 
} 

Однако FacesContextUtils.getWebApplicationContext(FacesContext.getCurrentInstance()) возвращает нуль, поэтому вызов getBean() на него бросает NullPointerException

мне нужно определить что-либо в любом месте?

EDITED

Мне нужно, чтобы получить компонент из контекста приложения, а не Jsf боб

+3

Какая именно ссылка «null»? Это статические методы, они могут невероятно бросать NPE. Разве вы не имеете в виду, что 'FacesContext # getCurrentInstance()' возвращает 'null' и что NPE фактически запущен внутри метода getWebApplicationContext()? – BalusC

+0

FacesContextUtils.getWebApplicationContext (FacesContext.getCurrentInstance()) возвращает значение null. FacesContext.getCurrentInstance() не является нулевым! – Dejell

ответ

6

FacesContext.getCurrentInstance() возвращает null, если ваш не в запросе, который обрабатывается с помощью FacesServlet. Убедитесь, что вы обрабатываете запрос, переданный через этот сервлет.

Обновление: Если контекст граней не равен нулю, причиной того, что контекст приложения может быть пустым, является отсутствие атрибута контекста сервлета с именем org.springframework.web.context.WebApplicationContext.ROOT. Это означает, что пружина не инициализирована должным образом. Удостоверьтесь, что у вас есть пружина ContextLoaderListener, нанесенная на карту web.xml, или DispatcherServlet

+0

Посмотреть мой комментарий к BalusC - FacesContext.getCurrentInstance() не является нулевым! Я получаю от него com.sun.faces.context.FacesContextImpl. – Dejell

+0

Спасибо! Мне не хватало ContextLoaderListener – Dejell

+0

@Odelya nice. Btw, принятый ответ с 0 upvotes кажется странным :) – Bozho

Смежные вопросы