ServletException "JSF"

23 respostas
R

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)

23 Respostas

Luiz_Gustavo

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

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.

Neto.Sabio

isso esta me parecendo biblioteca.

Toma cuida para nao importar bibliotecas d+ pois algumas ja vem com o aplication server.

pace!!!

R

Luiz_Gustavo

estou sim usando o TomCat quais são essas bibliotecas ?

rodrigovfsilva

Poste o seu web.xml pra gente dar uma olhada.

R

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

R

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>
rodrigovfsilva

Tenta adicionar o seu html do jsp dentro das tags <f:view></f:view>

Luiz_Gustavo

robsonsan,

as bibliotecas seriam essas mesmas:

jsf-api.jar
jsf-impl.jar

Neto.Sabio

Brother voce adicionou essas paginas que voce chama no faces.config.xml ?

“inserir.jsf” “buscar.jsf”

coloca o faces ai para nos vermos .

R

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>
Neto.Sabio

cara uma boa e usar ejb.

View - Mbean - Bean - hibernate.

acho que assim fica simples e diferenciando as camadas.

R

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>
Neto.Sabio

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:

&lt;managed-bean&gt;
  &lt;managed-bean-name&gt;agenda&lt;/managed-bean-name&gt;
  &lt;managed-bean-class&gt;br.com.mbean.Agenda&lt;/managed-bean-class&gt;
  &lt;managed-bean-scope&gt;request&lt;/managed-bean-scope&gt;
 &lt;/managed-bean&gt;

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!!!

R

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.

Neto.Sabio

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!!

Neto.Sabio

e ai rodou ?

R

Porra neto.Sabio vc e embaçado mesmo heiii funcionou.

valeu mesmo cara vc deu a maior atenção.

Satisfação.

Neto.Sabio

precisando e só falar

R

Neto.Sabio blz

cara não sei se eu posso estar aproveitando esse tópico para te fazer uma outra pergunta e que postei o que quero saber mais não tive resposta e se eu soubesse me ajudaria muito se vc poder me ajudar mais uma vez.

E que baixei o MyFaces e RckFaces e gostaria de usa-los no Eclipse Europa mais não sei como fazer se vc poder me explicar me ajudaria muito muito mesmo ou a galera ai que poder valeu pessoal.

Neto.Sabio

E ai brother,

Claro que posso te ajudar, para usar o richface e so adicionar nas suas libs os plugins:
richfaces-api-3.2.1.GA.jar
richfaces-impl-3.2.1.GA.jar
richfaces-ui-3.2.1.GA.jar

No eclipse ganimed voce pode baixar o jboss tools e la voce pode criar um projeto jsf que ele mota toda a estrutura para voce.

Caso tenha alguma duvida me manda o seu email via MP que eu de encaminho os plugins necessarios.

pace!!!

R

Firmesa Neto.Sabio muleke gente boa vc heii mano valeu segui o que vc me falou e baixei o Jboss Tools e parece que deu certo vou brincar um pouco com esse cara no fds para entender como ele funciona valeu muleke.

R

neto.Sabio cara estou aqui de novo com problemas se vc poder me ajudar e mais essa eu agradeceria muito mesmo veio, estou tentando inicializar meu servidor de aplicação mais ele esta dando erro na inicialização ontem desliguei o computador estava normal e hoje assim que começei a trabalhar na aplicação deu esse problema ?

abaixo esta o log do erro

parece que e alguma coisa com a JDK mais não estou compreendendo o que seja.

08/10/09 12:15:50 WARNING: EJBContainer.postInit Error generating wrappers for file:/C:/OC4J/j2ee/home/applications/admin_ejb.jarjava.lang.InstantiationException: javac.exe not found under C:\Program Files\Java\jre1.6.0_07, please use a valid jdk or specify the location of your java compiler in server.xml using the <java-compiler .../> tag
	at com.evermind.compiler.ExternalJavac.getJdkExecutable(ExternalJavac.java:359)
	at com.evermind.compiler.ExternalJavac.getSystemJavac(ExternalJavac.java:392)
	at com.evermind.compiler.ExternalJavac.getJavacCompiler(ExternalJavac.java:248)
	at com.evermind.compiler.ExternalJavac.checkIfValid(ExternalJavac.java:736)
	at com.evermind.server.ApplicationServer.getCompiler(ApplicationServer.java:2540)
	at com.evermind.server.ejb.compilation.Compilation.<init>(Compilation.java:155)
	at com.evermind.server.ejb.EJBContainer.postInit(EJBContainer.java:889)
	at com.evermind.server.ApplicationStateRunning.initializeApplication(ApplicationStateRunning.java:231)
	at com.evermind.server.Application.setConfig(Application.java:454)
	at com.evermind.server.Application.setConfig(Application.java:355)
	at com.evermind.server.ApplicationServer.initializeSystemApplication(ApplicationServer.java:1596)
	at com.evermind.server.ApplicationServer.initializeAutoDeployedApplications(ApplicationServer.java:1583)
	at com.evermind.server.ApplicationServer.setConfig(ApplicationServer.java:1018)
	at com.evermind.server.ApplicationServerLauncher.run(ApplicationServerLauncher.java:131)
	at java.lang.Thread.run(Unknown Source)

2008-10-09 12:15:50.765 ERROR J2EE EJB-03027 [system] An error occured deploying EJB module: java.lang.InstantiationException: Error generating wrappers for file:/C:/OC4J/j2ee/home/applications/admin_ejb.jar: javac.exe not found under C:\Program Files\Java\jre1.6.0_07, please use a valid jdk or specify the location of your java compiler in server.xml using the <java-compiler .../> tag
08/10/09 12:15:50 WARNING: Application.setConfig Application: system is in failed state as initialization failed. 
java.lang.InstantiationException: Error initializing ejb-modules: Error generating wrappers for file:/C:/OC4J/j2ee/home/applications/admin_ejb.jar: javac.exe not found under C:\Program Files\Java\jre1.6.0_07, please use a valid jdk or specify the location of your java compiler in server.xml using the <java-compiler .../> tag
08/10/09 12:15:50 Error initializing server: Application: system is in failed state as initialization failed
08/10/09 12:15:51 Fatal error: server exiting
Criado 22 de setembro de 2008
Ultima resposta 9 de out. de 2008
Respostas 23
Participantes 5