Eclipse & JSF & Tomcat 6 : "FacesContext not found"

标签 eclipse jsf tomcat wizard

我尝试使用 Eclipse Helios 启动一个基于 JSF 的项目。

创建新工作区后,我安装了 web-tools-platform 东西。所有使用“帮助”菜单中的“安装新软件”,效果都很好。

为了开始开发我的项目,我使用向导创建了一个新项目,下载并安装了 Tomcat 6.0 实例和运行时,并使用预设的“JavaServer Faces v1.2 项目”对其进行了配置。

我创建了一个单独的 index.jsp 文件(同样是使用 JSF 模板的向导)并在其上放置了一个 JSF 输出文本。

部署到 tomcat 似乎可行。在浏览器中调用 index.jsp 时,多次出现以下异常:

> 29.12.2010 18:24:00 org.apache.catalina.core.StandardWrapperValve invoke
SCHWERWIEGEND: Servlet.service() for servlet jsp threw exception
java.lang.RuntimeException: FacesContext not found
 at javax.faces.webapp.UIComponentClassicTagBase.getFacesContext(UIComponentClassicTagBase.java:321)
 at javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagBase.java:228)
 at org.apache.jsp.login_jsp._jspx_meth_f_005fview_005f0(login_jsp.java:95)
 at org.apache.jsp.login_jsp._jspService(login_jsp.java:69)
 at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
 at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
 at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
 at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
 at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
 at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
 at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
 at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
 at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
 at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852)
 at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
 at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
 at java.lang.Thread.run(Thread.java:662)

我所做的每一步都是一个标准的点击向导过程。

知道为什么这似乎不起作用吗?

如果有帮助,我可以轻松发布屏幕截图或文件摘录,但我不会在这里这样做以避免使问题过载。


***编辑:web.xml*** 这个文件直接来自eclipse,除了我删除了描述标签以缩短整个内容外,我没有修改它:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>Stundenplan</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>/faces/*</url-pattern>
  </servlet-mapping>
  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
  </context-param>
  <context-param>
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
  </context-param>
  <context-param>
    <param-name>org.apache.myfaces.ALLOW_JAVASCRIPT</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>org.apache.myfaces.PRETTY_HTML</param-name>
    <param-value>true</param-value>
  </context-param>
  <context-param>
    <param-name>org.apache.myfaces.DETECT_JAVASCRIPT</param-name>
    <param-value>false</param-value>
  </context-param>
  <context-param>
    <param-name>org.apache.myfaces.AUTO_SCROLL</param-name>
    <param-value>true</param-value>
  </context-param>
  <listener>
    <listener-class>org.apache.myfaces.webapp.StartupServletContextListener</listener-class>
  </listener>
</web-app>

已经尝试将 url-pattern 设置为 <url-pattern>/*</url-pattern>但随后出现异常 java.lang.NoClassDefFoundError: javax/servlet/jsp/jstl/core/Config

谢谢和问候,托拜厄斯

最佳答案

该用户几天前发布的答案是完全正确的(无论该帖子为何被删除)。

有必要将 jSTL.jar 文件添加到 /WEB-INF/lib 并且在 eclipse 中,您需要将其添加到构建路径

而且我不明白,如果 url-pattern 是 /faces/*,即使实际上不需要存在这样的文件夹,但您仍然可以调用该文件,例如/faces/index.jsp

非常感谢

关于Eclipse & JSF & Tomcat 6 : "FacesContext not found",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4556436/

相关文章:

java - 如何将pyc(python编译文件)转换为java?

java - 使用 git 存储库在 Eclipse 中管理 Maven 项目

java - BIRT 报告,您将如何创建贴纸?

java - 根据条件单击按钮时显示确认弹出窗口

java - 将系统变量传递给部署到 tomcat 的应用程序

java - 防止数据库更新期间 session 超时

eclipse - Tomcat 不显示 Eclipse 项目

Android 致命异常 ActivityNotFoundException

css - Primefaces 按钮颜色统一不渐变

java - 如何在 Netbeans 6.8 中为 JSF 1.2 中的 facelets 启用代码完成?