Eclipse & JSF & Tomcat 6: «FacesContext не найден» - PullRequest
1 голос
/ 29 декабря 2010

Используя Eclipse Helios, я попытался запустить проект на основе JSF.

После создания нового рабочего пространства я установил материал для веб-инструментов.Все, используя «Установить новое программное обеспечение» в меню «Справка», это работало достаточно хорошо.

Чтобы начать разработку для своего проекта, я создал новый проект с помощью мастера, с помощью которого я скачал и установил экземпляр Tomcat 6.0 иво время выполнения и настроил его с помощью предустановки «Проект JavaServer Faces v1.2».

Я создал один файл index.jsp (снова с мастером, использующим JSF-шаблон) и поместил в него JSF-outputText.

Кажется, что развертывание для кота работает.При вызове index.jsp в браузере я несколько раз получаю следующее исключение:

29.12.2010 18:24:00 org.apache.catalina.core.StandardWrapperValve вызывает SCHWERWIEGEND: Servlet.service () для сервлета JSP бросили исключение java.lang.RuntimeException: FacesContext не найден на javax.faces.webapp.UIComponentClassicTagBase.getFacesContext (UIComponentClassicTagBase.java:321) при javax.faces.webapp.UIComponentClassicTagBase.setJspId (UIComponentClassicTagBase.java:228) вorg.apache.jsp.login_jsp._jspx_meth_f_005fview_005f0 (login_jsp.java:95) в org.apache.jsp.login_jsp._jspService (login_jsp.java:69) в org.apache.jasper.runsp.70) в javax.servlet.http.HttpServlet.service (HttpServlet.java:717) в org.apache.jasper.servlet.JspServletWrapper.service (JspServletWrapper.java:377) в org.apache.jasper.erlet.Jserser.erlet.serser.servlet.serser.servlet.serser.servlet.serser.servlet.jserser.servlet.serser.serlet.serser.serlet.jserser.servlet.serser.serlet.jserser.servlet.jser(JspServlet.java:313) в org.apache.jasper.servlet.JspServlet.service (JspServlet.java:260) в javax.servlet.http.HttpServlet.service (HttpServlet.java:717) в org.apache.catalina.core.ApplicationFilterChain.internalDoFilter (ApplicationFilterChain.java:290) в org.apache.catalina.core.ApplicationFilterChain.jaf.jj.jj.org.apache.catalina.core.StandardWrapperValve.invoke (StandardWrapperValve.java:233) в org.apache.catalina.core.StandardContextValve.invoke (StandardContextValve.java:191) в org.apache.voalnd.coreStandardHostValve.java:127) в org.apache.catalina.valves.ErrorReportValve.invoke (ErrorReportValve.java:102) в org.apache.catalina.core.StandardEngineValve.invoke (StandardEngineValve.javagtache) или at9).connector.CoyoteAdapter.service (CoyoteAdapter.java:298) в org.apache.coyote.http11.Http11Processor.process (Http11Processor.java:852) в org.apache.coyote.http11.Http11Protocol $ HttpProPro $: 588) в org.apache.tomcat.util.net.JIoEndpoint $ Worker.run (JIoEndpoint.java:489) в java.lang.Thread.run (Thread.java:662)

Каждый отдельный шаг, который я делал, представлял собой стандартный процесс щелчка по мастеру.

Любая идея, почему это не таккажется, работает?

Я могу легко публиковать скриншоты или выдержки из файлов, если это поможет, хотя я не делаю это здесь, чтобы не перегружать вопрос.


Edit: 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 на <url-pattern>/*</url-pattern>, но затем появляется исключение "java.lang.NoClassDefFoundError: javax / servlet / jsp / jstl / core / Config"


Спасибо и с уважением, Тобиас

1 Ответ

2 голосов
/ 31 декабря 2010

Пользователь, опубликовавший свой ответ несколько дней назад, был совершенно прав (несмотря на то, что сообщение было удалено).

Необходимо добавить jstl.jar-файл к /WEB-INF/lib И в eclipse вам нужно добавить его в путь сборки

И я не понял, что если URL-шаблон /faces/*, даже если такая папка действительно не нужна, но вы все равно можете вызвать файл, например, /faces/index.jsp

Большое спасибо

...