1

我正在使用带有 WAS 7.0 和 Myeclipse Blue 10.7 的 MyFaces 1.2。我收到以下错误。我已经非常彻底地研究了互联网,但无济于事。日志不显示太多。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)
4

1 回答 1

0

当您通过与FacesServlet. 基本上,JSP 页面中的 JSF 组件期望FacesContextFacesContext#getCurrentInstance(). 然而,它又回来null了,这反过来又最终导致了这种情况NullPointerException

请注意,堆栈跟踪也没有给出任何FacesServlet正确调用的提示。调用直接转到容器自己的 JSP servlet(HttpJspBase在 Websphere 的情况下),而不是 JSF 自己的FacesServlet.

为了解决这个问题,只需查看映射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

或者

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

或者

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

无论哪种方式,这种方式FacesServlet都将被调用,并且能够FacesContext按照 JSP 页面中的 JSF 组件的预期正确准备。

也可以看看:

于 2013-08-08T15:09:55.773 回答