这是我写的一个JSF的一个小程序我是用JBuilder2005运行的,上来就出现这个异常,不过程序还是可以运行的,主要的提示是:Cannot find FacesContext 不知道是什么原因,请高手帮我解答一下!StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exceptionjavax.servlet.jsp.JspException: Cannot find FacesContextjavax.servlet.jsp.JspException: Cannot find FacesContext at javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:399) at com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:105) at org.apache.jsp.index_jsp._jspx_meth_f_view_0(index_jsp.java:95) at org.apache.jsp.index_jsp._jspService(index_jsp.java:70) at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:94)StandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exceptionStandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exceptionStandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exceptionStandardWrapperValve[debugjsp]: Servlet.service() for servlet debugjsp threw exceptionjavax.servlet.jsp.JspException: Cannot find FacesContextjavax.servlet.jsp.JspException: Cannot find FacesContextjavax.servlet.jsp.JspException: Cannot find FacesContextjavax.servlet.jsp.JspException: Cannot find FacesContext at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:324) at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:292) at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:236) at javax.servlet.http.HttpServlet.service(HttpServlet.java:802) at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:237) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:157) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:214) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:198) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:152) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:137) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:102) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) at org.apache.catalina.core.StandardValveContext.invokeNext(StandardValveContext.java:104) at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:520) at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:929) at org.apache.coyote.tomcat5.CoyoteAdapter.service(CoyoteAdapter.java:160) at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:799) at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:705) at org.apache.tomcat.util.net.TcpWorkerThread.runIt(PoolTcpEndpoint.java:577) at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:683) at java.lang.Thread.run(Thread.java:534)

解决方案 »

  1.   

    在web.xml里面:
         <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>*.faces</url-pattern>
          </servlet-mapping>
    在faces-config.xml里面配置页面导航的时候与之对应,在别的地方用到页面了就要写XX.faces
    比如:有aa.jsp如果在faces-config.xml里面配置过,调用了就要aa.faces,当然web.xml里面的**.faces里面的faces可以随便定义,改成你想要的,以后用的时候写成那个名子就好。你的aa里面使用了jsf组件或者有jsf输出配置就要写成.faces或你改的什么名称 假若你根本没有在faces-config.xml里面配置此页面,直接使用了可能会出现你打的警告,有时候根本不会出,直接报错,找不到该文件
      

  2.   

    如果你按照楼上这样皮质的话,在你访问的页面文件后绝对不能用jsp的后缀名,要用.faces的后缀名,你绝对不会再报这样的错误了。
        
        当然在导航规则中,文件名仍然是jsp的后缀名!