JSFエラー ーブレット jsp のServlet.service()が例外を投げましたjavax.servlet.jsp.JspException: Cannot find FacesContext の解決策
JSFで発生したExceptionとその対応策です。
[発生したException]
以下のリクエストURLでjudge.jspにアクセスしようとして発生した例外。
※コンテキストルートは「JsfSample1」とします。
http://localhost:8080/JsfSample1/judge.jsp
2008/01/24 9:59:16 org.apache.catalina.core.StandardWrapperValve invoke 致命的: サーブレット jsp のServlet.service()が例外を投げました javax.servlet.jsp.JspException: Cannot find FacesContext at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:427) at com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:125) at org.apache.jsp.judge_jsp._jspx_meth_f_005fview_005f0(judge_jsp.java:131) at org.apache.jsp.judge_jsp._jspService(judge_jsp.java:105) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:98) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:331) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:329) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265) at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
[Exceptionの発生した環境]
- JDK1.5.0_13
- eclipse3.2
- Tomcat5.5.25
- JSTL1.1.2
- JSF1.1
[原因推測と対応策]
これはJSFサーブレットを経由せずに、JSFコンポーネントを利用するjudge.jspに直接アクセスしたためです。代わりに次のURLでアクセスします。
http://localhost:8080/JsfSample1/samplefaces/judge.jsp
※WEB-INF/web.xmlでのサーブレット設定と関連します。
<!-- Faces Servlet --> <servlet> <servlet-name>FacesServlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup> 1 </load-on-startup> </servlet> <!-- Faces Servlet Mapping --> <servlet-mapping> <servlet-name>FacesServlet</servlet-name> <url-pattern>/samplefaces/*</url-pattern>★ここのURL"/samplefaces/"をjudge.jspを指定するリクエストのURL間に挟みます </servlet-mapping>