Pessoal tenho uma pagina JSF index.jsp e estou tentando chama - la porém esta dando o seguinte erro e não consigo resolver alguém pode ajudar.
javax.servlet.ServletException: Cannot find FacesContext
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:845)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:778)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:78)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
javax.servlet.jsp.JspException: Cannot find FacesContext
javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:405)
com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:105)
org.apache.jsp.index_jsp._jspx_meth_f_view_0(org.apache.jsp.index_jsp:93)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:68)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
robsonsan,
em que ambiente você está executando a aplicação?
É a primeira aplicação que você executa nesse ambiente?
Pergunto isso pois aparentemente está faltando biblioteca de suporte ao JSF em seu ambiente.
Se você está usando o Jboss ou Glassfish, eles já tem isso nativo, mas se está usando o Tomcat, precisará adicionar as bibliotecas de suporte.
Abraços!
rissato
Setembro 22, 2008, 4:56pm
#3
deve estar com um problema de configuração. Dá uma checada no seu web.xml e confere se o servlet do jsf está configurado corretamente.
isso esta me parecendo biblioteca.
Toma cuida para nao importar bibliotecas d+ pois algumas ja vem com o aplication server.
pace!!!
Luiz_Gustavo
estou sim usando o TomCat quais são essas bibliotecas ?
Poste o seu web.xml pra gente dar uma olhada.
Pessoal quando deixo essa pagina ai da o seguinte erro conforme abaixo,
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
<head>
<title>Exemplo JSF</title>
</head>
<body>
<f:view>
<h:form>
<center> <h1>Agenda</h1> <br> <h3>
<h:outputLink value="inserir.jsf"> <f:verbatim>Inserir</f:verbatim> </h:outputLink><br><br>
<h:outputLink value="buscar.jsf"> <f:verbatim>Buscar</f:verbatim> </h:outputLink></h3> </center>
</h:form>
</f:view>
</body>
</html>
javax.servlet.ServletException: Cannot find FacesContext
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:845)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:778)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:80)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
root cause
javax.servlet.jsp.JspException: Cannot find FacesContext
javax.faces.webapp.UIComponentTag.doStartTag(UIComponentTag.java:405)
com.sun.faces.taglib.jsf_core.ViewTag.doStartTag(ViewTag.java:105)
org.apache.jsp.index_jsp._jspx_meth_f_view_0(org.apache.jsp.index_jsp:95)
org.apache.jsp.index_jsp._jspService(org.apache.jsp.index_jsp:70)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
Agora se eu deixar a mesma pagina mais sem as tags personalizadas ele funciona normalmente.
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
<head>
<title>Exemplo JSF</title>
</head>
<body>
<h3> Pagina Inicial Teste </h3>
</body>
</html>
quanto as LIBs add essas aqui.
commons-beanutils.jar
commons-collections.jar
commons-digester.jar
commons-logging.jar
jsf-api.jar
jsf-impl.jar
jstl-1.0.2.jar
standard-1.0.2.jar
Esse e meu Web.xml tem coisa a mais ai pois essa aplicação e a minha primeira usando JSF e estou fazendo um exemplo que encontrei mais já estou tendo problemas para subir a minha pagina index
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app id="WebApp_ID">
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<listener>
<listener-class>
com.sun.faces.config.ConfigureListener
</listener-class>
</listener>
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>
javax.faces.webapp.FacesServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
</web-app>
Tenta adicionar o seu html do jsp dentro das tags <f:view></f:view>
robsonsan,
as bibliotecas seriam essas mesmas:
jsf-api.jar
jsf-impl.jar
Brother voce adicionou essas paginas que voce chama no faces.config.xml ?
“inserir.jsf” “buscar.jsf”
coloca o faces ai para nos vermos .
Galera Muito Obrigado mesmo funcionou consegui fazer chamar a pagina index
Pessoal será que algum de vcs poderiam me explicar como e a estrutura que faço do JSF para por exemplo inserir os dados de um formulario no BD
eu sempre usei o Struts como framework e nele usava as seguintes camadas.
Formulário <— Onde tenho meu HTML com as tags do stuts
Action <-- Onde tenho meus metodos para fazer as chamadas
Form <------- Tenho metodos que controlar meus objetos
DAO <---- CRUD
TO <---- Onde tenho meus beans dos objetos do formulario
aqui esta meu Web.xml
<?xml version="1.0"?>
<!DOCTYPE web-app PUBLIC
"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<context-param>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
<param-value>client</param-value>
</context-param>
<context-param>
<param-name>javax.faces.CONFIG_FILES</param-name>
<param-value>/WEB-INF/faces-config.xml</param-value>
</context-param>
<listener>
<listener-class>
com.sun.faces.config.ConfigureListener
</listener-class>
</listener>
<!-- Faces Servlet -->
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Faces Servlet Mapping -->
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>*.jsf</url-pattern>
</servlet-mapping>
</web-app>
Aqui esta meu faces-config.xml
<?xml version="1.0"?>
<!DOCTYPE faces-config PUBLIC
"-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.0//EN"
"http://java.sun.com/dtd/web-facesconfig_1_0.dtd">
<faces-config>
<navigation-rule>
<from-view-id>/buscar.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/sucesso_busca.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/falha_busca.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<navigation-rule>
<from-view-id>/inserir.jsp</from-view-id>
<navigation-case>
<from-outcome>success</from-outcome>
<to-view-id>/sucesso_insercao.jsp</to-view-id>
</navigation-case>
<navigation-case>
<from-outcome>failure</from-outcome>
<to-view-id>/falha_insercao.jsp</to-view-id>
</navigation-case>
</navigation-rule>
<managed-bean>
<managed-bean-name>agenda</managed-bean-name>
<managed-bean-class>AgendaDB</managed-bean-class>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
</faces-config>
cara uma boa e usar ejb.
View - Mbean - Bean - hibernate.
acho que assim fica simples e diferenciando as camadas.
Galera nesse formulario abaixo eu tenho por exemplo essa linha aqui <h:inputText value="#{agenda.nome}" /> o "inputText " tudo bem, mais agora esse trecho “#{agenda.nome}” não entendi direito ainda isso e uma apostila que peguei na net e estou fazendo o exemplo que tem para entender direito como funciona o JSF
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<html>
<body>
<f:view>
<h:form>
<center>
<h2>Inserção</h2>
</center>
<br>
<h3>Entre com os dados abaixo</h3>
<table>
<tr>
<td>Nome:</td>
<td><h:inputText value="#{agenda.nome}" /></td>
</tr>
<tr>
<td>Endereço:</td>
<td><h:inputText value="#{agenda.endereco}" /></td>
</tr>
<tr>
<td>Cidade:</td>
<td><h:inputText value="#{agenda.cidade}" /></td>
</tr>
<tr>
<td>Telefone:</td>
<td><h:inputText value="#{agenda.telefone}" /></td>
</tr>
</table>
<p><h:commandButton value="Inserir" action="#{agenda.inserir}" />
</p>
</h:form>
<br>
<h:outputLink value="index.jsf"><f:verbatim>voltar</f:verbatim></h:outputLink>
</f:view>
</body>
</html>
robsonsan,
o #{agenda.nome} significa que voce tem uma classe agenda e nela voce tem uma atributo nome
exemplo;
public class Agenda{
private String nome;
//get e set.....
}
è necessario configurar esse classe no face-config.xml, que provavelmente está assim:
<managed-bean>
<managed-bean-name>agenda</managed-bean-name>
<managed-bean-class>br.com.mbean.Agenda</managed-bean-class>
<managed-bean-scope>request</managed-bean-scope>
</managed-bean>
O <managed-bean-scope> e o pacote do <managed-bean-class> poderá estar diferente.
Quando um usuario digita um parametro dentro desse imput text os valores sao setados na variavel do seu Mbean"Agenda". Isso irã ficar em session se voce determinr no xml “<managed-bean-scope>”
duvidas e só falar
pace!!!
Porra Neto.Sabio show de bola sua explicação gostei muito
estou tentando rodar essa aplicação porem quando tiro #{agenda.} a aplicação roda normal agora se eu ponho #{agenda.nome} ai ela da erro 500
vc tem ideia do que seja.
Tenho sim.
Ideia 1 -
Voce nao tem mapeado no face-config.xml a classe agenda
ideia 2 -
No class voce nao tem a atributo nome
ideia 3 -
o web.xml nao esta configurado para trabalhar com facelets.
resolu…
Coloque aqui o seus xmls
e a classe agenda
pace!!
Porra neto.Sabio vc e embaçado mesmo heiii funcionou.
valeu mesmo cara vc deu a maior atenção.
Satisfação.