Help faces-config.xml

14 respostas
fabioebner

Pessoal o q eu preciso adicionar no faces-config.xml para que uma pagina q esteja dentro de um diretorio funcione?? por exemplo no netbens eu dentro da web Pages criei um diretorio PRINCIPAL e dentro desse dir eu criei o arquivo index.jsp

mas nao consigo fazer esse index.jsp rodar(sempre q coloco um f:view por exemplo). qdo chamo ele da facesContext bla bla bla

obrigado

14 Respostas

S

/PRINCIPAL /index.jsf

isso vai depender de como mapeastes no web.xml

D

Vc que esta seja sua pagina inicial ou éalguma regra de
navegação?
Tem muito tempo que eu não mexo mas acho que é só
colocar /diretorio/suapagina.

fabioebner

nao entao.. o q acontece. no netbeans td o q eu criar no WEB PAGES ele roda normalmente sem problemas, nada de mais nada de menos.. agora se dentro da WEB PAGES eu criar um dir CADASTRO e dentro desse dir criar uma pagina INDEX.JSP for no meu navegador e colocar:

http://localhost:8080/campanha/principal/index.jsp

ele me da o seguinte erro:


HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /principal/index.jsp at line 23

20:
21:

Hello World!


22:
23:
24:

25:

Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.lang.RuntimeException: Cannot find FacesContext
javax.faces.webapp.UIComponentClassicTagBase.getFacesContext(UIComponentClassicTagBase.java:1797)
javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagBase.java:1614)
org.apache.jsp.principal.index_jsp._jspx_meth_f_005fview_005f0(index_jsp.java:101)
org.apache.jsp.principal.index_jsp._jspService(index_jsp.java:76)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
Apache Tomcat/6.0.14

meu faces config esta assim:
<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="1.2" 
    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">
</faces-config>

na verdade nao tem nada.. pq ainda so queria mostrar o FORM sem fazer as regras de navegacao.. so queria ir no navegador e colocar

http://localhost:8080/campanha/principal/index.jsp

e ele aparecer

a minha index.jsp esta assim:
<%-- 
    Document   : index
    Created on : 08/01/2008, 15:10:17
    Author     : Fabio Ebner
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h2>Hello World!</h2>
    </body>
    <f:view>
    </f:view>
</html>

sendo q a welcomeJSP.jsp que o netbeans cria funciona normalmente.

obrigado

S

cara se você tem em elemento ou melhor um componente jsf, obrigatoriamente você deve chamar essa url, passando pelo
facede configurado no web.xml…

sua chamada deveria ser assim…

http://localhost:8080/campanha/principal/index.jsf

fabioebner

ele da o seguinte erro:

HTTP Status 404 - /campanha/principal/index.jsf

type Status report

message /campanha/principal/index.jsf

description The requested resource (/campanha/principal/index.jsf) is not available.
Apache Tomcat/6.0.14

S

você deve acessar a url exatamente como esta as subpastas,

lembre-se, sensitive-case, teu diretorio PRINCIPAL esta tudo em maisculo ??

http://localhost:8080/campanha/PRINCIPAL/index.jsf

esse tipo de erro é prq não encontrou a pagina…

fabioebner

e td minusculo… e tipo o arquivo q eu criei e .jsp e nao .jsf se eu trocar o jsf por jsp ele acha normalemente mas da aquele erro

S

cara posta seu web.xml ai…

fabioebner
vamos la web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" 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">
    <context-param>
        <param-name>com.sun.faces.verifyObjects</param-name>
        <param-value>false</param-value>
    </context-param>
    <context-param>
        <param-name>com.sun.faces.validateXml</param-name>
        <param-value>true</param-value>
    </context-param>
    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    <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>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>faces/welcomeJSF.jsp</welcome-file>
    </welcome-file-list>
</web-app>
faces-config.xml
<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="1.2" 
    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">
</faces-config>
index.jsp
<%-- 
    Document   : index
    Created on : 08/01/2008, 15:10:17
    Author     : Fabio Ebner
--%>

<%@page contentType="text/html" pageEncoding="UTF-8"%>

<%@ taglib prefix="f" uri="http://java.sun.com/jsf/core" %>
<%@ taglib prefix="h" uri="http://java.sun.com/jsf/html" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
   "http://www.w3.org/TR/html4/loose.dtd">

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>
        <h2>Hello World!</h2>
    </body>
    <f:view>
    </f:view>
</html>

eu so queria faze essa pagina index.jsp aparecer na tela sem erro :) se eu tirar o e rodar chamando http://localhost:8080/campanha/principal/index.jsp ele mostra normalmente

segue abaixo a estrutura de diretorios

abracos

S

cara tenta isso, altere essa linha

<servlet-mapping>  
   <servlet-name>Faces Servlet</servlet-name>  
   <url-pattern>/faces/*</url-pattern>  
  </servlet-mapping>

por isso…

<servlet-mapping>  
   <servlet-name>Faces Servlet</servlet-name>  
   <url-pattern>*.jsf</url-pattern>  
  </servlet-mapping>
S

e lembre-se chama ele assim

http://localhost:8080/campanha/principal/index.jsf

fabioebner

cara funcionou mas agora eu nao consigo colocar uma pagina de abertura inicial no web.xml
se eu coloc:

<welcome-file-list> <welcome-file>principal/index.jsp</welcome-file> </welcome-file-list>

ele da o seguinte erro

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: An exception occurred processing JSP page /principal/index.jsp at line 23

20:
21:

Hello Worldasd ad asdasd!


22:
23: <f:view>
24: </f:view>
25:
Stacktrace:

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:524)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:435)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

root cause

java.lang.RuntimeException: Cannot find FacesContext

javax.faces.webapp.UIComponentClassicTagBase.getFacesContext(UIComponentClassicTagBase.java:1797)

javax.faces.webapp.UIComponentClassicTagBase.setJspId(UIComponentClassicTagBase.java:1614)

org.apache.jsp.principal.index_jsp._jspx_meth_f_005fview_005f0(index_jsp.java:101)

org.apache.jsp.principal.index_jsp._jspService(index_jsp.java:76)

org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)

javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.14 logs.
Apache Tomcat/6.0.14

e se eu colocar

<welcome-file-list> <welcome-file>principal/index.jsf</welcome-file> </welcome-file-list>

ele da o seguinte erro:

HTTP Status 404 - /campanha/

type Status report

message /campanha/

description The requested resource (/campanha/) is not available.
Apache Tomcat/6.0.14

sabe o pq???

S

foi como eu te disse, quado você trabalha com jsf, e tem um pagina onde você usa componetes jsf,
você deve passar pelo facede cadastrado no web.xml

você você chama suapagina.jsp, da pau prq vc tem um componente jsf, <f:view>

e quando você o coloca no web.xml como pagina inicial acho que naum vai conseguir chamar utilizando essa sintaxe,
tem de chamar na unha…qq duvida posta ai…

T

Basta criar o arquivo principal/index.jsf. O arquivo não precisa ter nenhum conteúdo.

Criado 9 de janeiro de 2008
Ultima resposta 3 de mar. de 2009
Respostas 14
Participantes 4