我正在使用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)
答案 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模式完全匹配。所以,而不是例如
你应该根据实际的映射使用
或
或
无论哪种方式,这样都可以调用FacesContext
,并且能够按照JSP页面中的JSF组件的预期正确准备{{1}}。