org.apache.myfaces.taglib.core.ViewTag.doStartTag中的java.lang.NullPointerException

时间:2013-08-08 15:03:26

标签: jsp jsf nullpointerexception myfaces

我正在使用MyFaces 1.2和WAS 7.0以及Myeclipse Blue 10.7。我收到以下错误。我已经彻底研究了互联网,但无济于事。日志不多。 MyEclipse没有像IBM RAD那样的JSF跟踪调试实用程序。

[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)

1 个答案:

答案 0 :(得分:0)

当您通过请求URL打开包含JSF组件的JSP页面时,通常会出现此异常,该请求URL与FacesServlet的URL模式不匹配。基本上,JSP页面中的JSF组件期望FacesContext可以FacesContext#getCurrentInstance()使用null。但是,它返回NullPointerException,最终导致此FacesServlet

请注意,堆栈跟踪也没有提供任何正确调用HttpJspBase的提示。调用直接转到容器自己的JSP servlet,对于Websphere而言是FacesServlet,而不是JSF自己的web.xml

为了解决此问题,只需查看FacesServlet已映射*.jsf的网址格式。在JSF 1.x中,通常为*.faces/faces/*或非常FacesServlet。一旦你想到这一点,只需确保请求URL(如浏览器的地址栏中所示)与该URL模式完全匹配。所以,而不是例如

  

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

你应该根据实际的映射使用

  

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

  

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

  

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

无论哪种方式,这样都可以调用FacesContext,并且能够按照JSP页面中的JSF组件的预期正确准备{{1}}。

另见: