java.lang.NullPointerException в org.apache.myfaces.taglib.core.ViewTag.doStartTag

Я использую MyFaces 1.2 с WAS 7.0 и Myeclipse Blue 10.7. Я получаю следующую ошибку. Я исследовал Интернет довольно тщательно, но безрезультатно. Логи мало что представляют. MyEclipse не имеет утилиты отладки трассировки JSF, такой как IBM RAD.

[8/8/13 10:41:19:447 EDT] 00000018 webapp        E com.ibm.ws.webcontainer.webapp.WebApp logServletError SRVE0293E: [Servlet Error]-[/sui_index.jsp]: java.lang.NullPointerException
    at org.apache.myfaces.taglib.core.ViewTag.doStartTag(ViewTag.java:75)
    at com.ibm._jsp._sui_5F_welcome._jspx_meth_f_view_0(_sui_5F_welcome.java:755)
    at com.ibm._jsp._sui_5F_welcome._jspService(_sui_5F_welcome.java:121)
    at com.ibm.ws.jsp.runtime.HttpJspBase.service(HttpJspBase.java:99)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1664)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:940)
    at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:503)

person GregT3    schedule 08.08.2013    source источник


Ответы (1)


Это исключение типично, когда вы открываете страницу JSP, содержащую компоненты JSF, по URL-адресу запроса, который не соответствует шаблону URL-адреса FacesServlet. По сути, компоненты JSF на странице JSP ожидают, что FacesContext будет доступен к FacesContext#getCurrentInstance(). Однако он вернул null, что, в свою очередь, в конечном итоге вызвало это NullPointerException.

Обратите внимание, что трассировка стека также не дает никакого намека на то, что FacesServlet был вызван правильно. Вызов перешел непосредственно к собственному сервлету JSP контейнера, который имеет номер HttpJspBase в случае Websphere, а не собственный FacesServlet JSF.

Чтобы решить эту проблему, просто посмотрите в web.xml, на какой шаблон URL был сопоставлен FacesServlet. В JSF 1.x это обычно *.jsf, может быть, *.faces, а может быть, и /faces/*. Как только вы это поняли, просто убедитесь, что URL-адрес запроса, который вы видите в адресной строке браузера, точно соответствует шаблону URL-адреса. Так, вместо, например,

http://example.com/context/sui_index.jsp

вы должны в зависимости от фактического отображения использовать либо

http://example.com/context/sui_index.jsf

or

http://example.com/context/sui_index.faces

or

http://example.com/context/faces/sui_index.jsp

В любом случае, таким образом FacesServlet будет вызываться и сможет правильно подготовить FacesContext, как ожидается компонентами JSF на странице JSP.

Смотрите также:

person BalusC    schedule 08.08.2013