Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > ошибка в jsf


Автор: NikitOS9 29.9.2008, 23:39
видел на форуме подобный вопрос про jsf, но тут фсе правильно мне кажется и не работает
значит вот:
юзаю sun app 9.1.02 и идею.

создан проджект в идее как j2ee, jsf 1.2
файлы web.xml, faces-config.xml созданы автоматически

Код

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
          http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
           version="2.5">

  <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>
  <servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.faces</url-pattern>
  </servlet-mapping>
</web-app>


Код

<?xml version='1.0' encoding='UTF-8'?>
<faces-config xmlns="http://java.sun.com/xml/ns/javaee"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd"
              version="1.2">
  
</faces-config>


index.jsp

Код

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>

<html>
  <head><title>Simple jsp page</title></head>
  <body>
  <jsp:forward page="/faces/test.jsf"/>
  </body>
</html>


test.faces

Код

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
<%@ taglib uri="http://java.sun.com/jsf/html"  prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsf/core"  prefix="f" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

<html>
  <head><title>Simple jsp page</title></head>
  <body>
  123434
  </body>
</html>


файл test.jsf находится точно в каталоге faces.
в lib точно лежат jsf-api, jsf-impl, jstl. 
так же подключил к идее еще из серверного lib appserv-jstl.jar, так как без него она не понимает
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>(отключать тоже пробовал)

ошибка вот такая при вызове index,jsp

[#|2008-09-30T00:37:17.234+0400|WARNING|sun-appserver9.1|javax.enterprise.resource.webcontainer.jsf.lifecycle|_ThreadID=16;_ThreadName=httpSSLWorkerThread-8080-0;_RequestID=9c0e1ba7-3016-4f6a-a157-a29c80631d25;|executePhase(RENDER_RESPONSE 6,com.sun.faces.context.FacesContextImpl@5598) threw exception
javax.faces.FacesException: javax.servlet.ServletException: PWC1232: Exceeded maximum depth for nested request dispatches: 20
    at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:413)
    at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:442)
    at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:115)
    at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
    at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
    at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
    at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
    at org.apache.catalina.core.ApplicationDispatcher.doInvoke(ApplicationDispatcher.java:855)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:703)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:542)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:474)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:366)
    at org.apache.jasper.runtime.PageContextImpl.forward(PageContextImpl.java:767)
    at org.apache.jsp.index_jsp._jspService(index_jsp.java from :53)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:93)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:470)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:364)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
    at org.apache.catalina.core.ApplicationFilterChain.servletService(ApplicationFilterChain.java:411)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:290)
    at org.apache.catalina.core.StandardContextValve.invokeInternal(StandardContextValve.java:271)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:202)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
    at com.sun.enterprise.web.WebPipeline.invoke(WebPipeline.java:94)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:206)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:632)
    at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:577)
........

ф чем дело ??




Автор: necromancer 30.9.2008, 12:13
1. Желательно использовать 1 маппинг (или /faces/* или .faces ) что бы не было путаницы (поэтому не люблю авто конфиги)
2. как ты вызываешь index.jsp?
3. ты ДЕЙСВИТЕЛЬНО считаешь что <jsp:forward page="/faces/test.jsf"/> тут допустим?
4. Уж не знаю обязательны или нет но <f:view> не помешал бы
5. страницу необходимо запрашивать http://you addr:ip/youwebapp/faces/test.jsp or http://you addr:ip/youwebapp/faces/test.jsf

Автор: NikitOS9 30.9.2008, 12:41
ты ДЕЙСВИТЕЛЬНО считаешь что <jsp:forward page="/faces/test.jsf"/> тут допустим?

опечатался просто, <jsp:forward page="/faces/test.faces"/>
конечно допустим, разве нет.

вызываю index.jsp так, http://localhost:8080/Web/index.jsp
так как архив Web.war. jsp работают без проблем, jsf нет


Автор: acvilon 3.10.2008, 16:33
Дерево проекта в студиюsmile

Автор: NikitOS9 6.10.2008, 23:30
конечно )
D:.
├───lib
├───META-INF
├───out
│   ├───exploded
│   │   ├───testJSFEar
│   │   │   ├───EJB.jar
│   │   │   │   └───META-INF
│   │   │   ├───META-INF
│   │   │   └───Web.war
│   │   │       ├───faces
│   │   │       └───WEB-INF
│   │   │           └───lib
│   │   ├───testJSFEJB
│   │   │   └───META-INF
│   │   └───testJSFWeb
│   │       ├───faces
│   │       └───WEB-INF
│   │           └───lib
│   ├───production
│   │   └───testJSF
│   └───test
│       └───testJSF
├───src
└───web
    ├───faces
    └───WEB-INF

вложу идейный проджект, может чего не доглядел в нем..
без либ jsf-api.jar jsf-impl.jar jstl.jar по размеру не лезут.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)