JSF: Erro básico

17 respostas
R

Boa tarde,
Tõ iniciando em jsf. To tentando executar um exemplo bem básico do famoso alomundo, mas não tô conseguindo.
Toda a estrutura, incluindo a mensagem de erro quando executo, está na imagem anexa. Essa é a aplicação:
http://www.java2s.com/Code/Java/J2EE/HelloWorldJSF.htm
Tá exatamente como no exemplo.
Grato!


17 Respostas

R

essa sua tela jsp, está como welcome-file, no seu web.xml ?

R

Sim, meus arquivos são os q seguem:

=========================
CLASSE BEAN:
public class HelloWorldBean {

private String hello = "Hello in the JavaServer Faces World!";

public String getHello () {
return this.hello;

}

}

=========================
FACES-CONFIG

<?xml version="1.0" encoding="UTF-8"?>
<managed-bean>

HelloWorldBean
eu.czeczotka.HelloWorldBean
session

=========================
WEB.XML

<?xml version="1.0" encoding="UTF-8"?>
<display-name>

HelloWorldJSF

<description>

Hello in the JavaServer Faces World!

<listener>
    <listener-class>
  org.apache.myfaces.webapp.StartupServletContextListener
<servlet>

Faces Servlet
javax.faces.webapp.FacesServlet
1

<servlet-mapping>

Faces Servlet
*.jsf

<welcome-file-list>

helloworld.jsp

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

<%-- HelloWorldJSF - author Jakub Czeczotka --%>

HelloWorldJSF

L

Tenta colocar no welcome-file list a página como /jsf/helloWorld.jsp

L

Tenta colocar no welcome-file-list como /jsf/HelloWorld.jsp

H

Caso você tenha mais dúvidas de como fazer um hello world, aqui tem um passo a passo: JSF - Hello World, AutoComplete.

Opte por xhtml ao invés de jsp. É melhor para você.

R

Amigo, fiz do jeito q vc indicou, mas o erro persiste.
Tentei fazer o exemplo do AUTOCOMPLETE, mas tbm não consegui. Devo estar me atrapalhando na questão do mapeamento.
Mas tô fazendo de forma idêntica aos exercicios.
Como pode estar errado??

R

jakefrog:
Caso você tenha mais dúvidas de como fazer um hello world, aqui tem um passo a passo: JSF - Hello World, AutoComplete.

Opte por xhtml ao invés de jsp. É melhor para você.

Fiz esse exemplo e funciona apenas se eu acessar a aplicação diretamente pelo endereço: http://localhost:8080/ProjectJSF/index.xhtml. Pois, ao executar a aplicação, a barra de endereços apresenta o valor http://localhost:8080/ProjectJSF/ e a seguinte mensagem de erro na página:
type Status report
message /ProjectJSF/
description The requested resource (/ProjectJSF/) is not available.

Imagino q seja a configuraçao no web.xml. Mas não sei como mudar. Meu web.xml tá assim:

<?xml version="1.0" encoding="UTF-8"?>



Faces Servlet
javax.faces.webapp.FacesServlet
1


Faces Servlet
.jsf
/faces/



faces/index.xhtml

H

Desse modo você ñ vai conseguir.

Tente fazer como aqui: http://uaihebert.com/?p=834&page=7

R

tente mudar

<welcome-file>faces/index.xhtml</welcome-file>

para

<welcome-file>index.xhtml</welcome-file>

H

rock:
tente mudar

<welcome-file>faces/index.xhtml</welcome-file>

para

<welcome-file>index.xhtml</welcome-file>

Mas funciona mesmo ele não tendo mapeado xhtml para o web.xml?

R

Não. Desculpem.

Se ele mapear *.xhtml para o Faces Servlet como vc postou

o welcome-file mapeado para faces/index.xhtml irá funcionar com o index.xhtml no diretório WebContent?

H

Ops. ignore this

R

Se eu copiar e colar a URL direto para um navegador, digamos, o Explorer http://localhost:8080/ProjectoJsf/olaMundoJsf.jsf ela FUNCIONA! Porém, quando eu executo o projeto, a URL q aparece no eclipse eh http://localhost:8080/ProjectoJsf/, e NÃO funciona. Dá esse erro: Como resolver???

type Exception report

message

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

exception

org.apache.jasper.JasperException: java.lang.RuntimeException: Cannot find FacesContext

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

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

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

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

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

root cause

java.lang.RuntimeException: Cannot find FacesContext

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

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

org.apache.jsp.olaMundoJsf_jsp._jspx_meth_f_005fview_005f0(olaMundoJsf_jsp.java:106)

org.apache.jsp.olaMundoJsf_jsp._jspService(olaMundoJsf_jsp.java:80)

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

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

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

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

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

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

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

N

amigo você está usando jsp ou páginas xhtml?

N

seu arquivo web.xml está com os dois?

<url-pattern>*.jsf</url-pattern>

e

<url-pattern>/faces/*</url-pattern>

eu sempre uso somente o primeiro e depois e sempre uso páginas xhtml, porém, na chamada do web.xml chamo as páginas index.xhtml como index.jsf

N

se está usando JSF 2 não use mais JSP, páginas xhtml são mais rápidas do que JSP e poderá no JSF 2 mapear os bean com anotações.

B

Olá Rogerio,

Sim, o seu problema está na configuração do seu arquivo web.xml. Mais
especificamente na configuração do url-pattern do FacesContext em relação
ao seu welcome-file.

Para corrigir o problema altere essas duas configurações do seu web.xml para:
Configuração das páginas iniciais padrão:

<welcome-file-list> <welcome-file>index.xhtml</welcome-file> <welcome-file>index.html</welcome-file> </welcome-file-list> e o Mapeamento das páginas JSF

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>
  </servlet-mapping>
Criado 1 de junho de 2012
Ultima resposta 9 de jun. de 2012
Respostas 17
Participantes 7