Exception =&gt Meu primeiro programa JSF

2 respostas
mestrekame

Olá comunidade

Mais uma vez estou aqui com muitas dúvidas.
Estou começando minha caminhada no desenvolvimento web com java.
“Copiei” um exemplo que eu achei em um site para poder ver se aprendo um pouco. O exemplo constitui em um sistema de login. Bem interessante o exemplo por sinal.

Quando rodei o projeto surgiu a seguinte mensagem:

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: Exception in JSP: /login.jsp:5

2: <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
3: <%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
4: <html>
5: <f:view>
6:   <head>
7:     <title>Login de Usu&#65533;rios Usando JSF</title>
8:   </head>


Stacktrace:
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:504)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:375)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

root cause

javax.servlet.ServletException: Cannot find FacesContext
	org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:858)
	org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
	org.apache.jsp.login_jsp._jspService(login_jsp.java:77)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

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.login_jsp._jspx_meth_f_view_0(login_jsp.java:92)
	org.apache.jsp.login_jsp._jspService(login_jsp.java:68)
	org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:332)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
	org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)

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

O código que rodei tem a seguinte estrutura:

index.jsp
Só redireciona para /login.jsp

<html>
    <head>
        <meta http-equiv="Refresh" content= "0; URL=login.jsp"/>
        
        <title>JSP Page</title>
    </head>
    <body>

    <h1>JSP Page</h1>
    
        <p>Está página  vai ser iniciada. Aguarde...</p>
    </body>
</html>

/login.jsp

<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<html>
<f:view>
  <head>
    <title>Login de Usuários Usando JSF</title>
  </head>
  <body>
    <h:form>
      <h3>Por favor informe seu nome e senha:</h3>
      <table>
        <tr>
          <td>Nome:</td>
          <td><h:inputText value="#{usuarioBean.nome}"/></td>
        </tr>
        <tr>
          <td>Senha:</td>
          <td><h:inputSecret value="#{usuarioBean.senha}"/></td>
        </tr>
        <tr>
          <td colspan="2"><h:commandButton value="Login" 
             action="#{usuarioBean.verificarUsuario}"/></td>
        </tr>
      </table>
    </h:form>
  </body>
</f:view>
</html>

sucesso.jsp

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

<f:view>
  <head>
    <title>Login de Usuários Usando JSF</title>
  </head>
  <body>
    <h:form>
      <h3>
        <h:outputText value="#{usuarioBean.nome}"/>,
              seu login foi efetuado com sucesso!
      </h3>
    </h:form>
  </body>
</f:view>
</html>

erro.jsp

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

<f:view>
  <head>
    <title>Sistema de Login de Usuários</title>
  </head>
  <body>
    <h:form>
      <h3>Nome de usuário ou senha não confere!</h3>
    </h:form>
  </body>
</f:view>
</html>

faces-conf.xml

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


<!DOCTYPE faces-config PUBLIC
  "-//Sun Microsystems, Inc.//DTD JavaServer Faces Config 1.1//EN"
  "http://java.sun.com/dtd/web-facesconfig_1_1.dtd">

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

<faces-config>
    <managed-bean>
        <managed-bean-name>usuarioBean</managed-bean-name>
        <managed-bean-class>pacote.UsuarioBean</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <navigation-rule>
        <from-view-id>/login.jsp</from-view-id>
        
        <navigation-case>
            <from-outcome>sucesso</from-outcome>
            <to-view-id>/sucesso.jsp</to-view-id>
        </navigation-case>
        
        <navigation-case>
            <from-outcome>erro</from-outcome>
            <to-view-id>/erro.jsp</to-view-id>
        </navigation-case>
    </navigation-rule>
 
</faces-config>


web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    <description>Aplicação de Login Usando JSF</description>
    <display-name>Login JSF</display-name>
    <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>*.jsf</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
	<welcome-file>
            index.jsp
        </welcome-file>
    </welcome-file-list>
</web-app>

Desde já agradeço por qualquer ajuda.

2 Respostas

afamorim

Meu velho, o exemplo roda e o seu não?

faces-config vc tem que colocar que ação vai levar a que retorno tipo:

&lt;navigation-rule&gt;
	&lt;description&gt;Remover Artigo.&lt;/description&gt;
	&lt;from-view-id&gt;/site/artigoConsulta.jsp&lt;/from-view-id&gt;
	
	&lt;navigation-case&gt;
		&lt;from-action&gt;#{ArtigoBean.remover}&lt;/from-action&gt;
		&lt;from-outcome&gt;sucesso&lt;/from-outcome&gt;
		&lt;to-view-id&gt;/site/artigoConsulta.jsp&lt;/to-view-id&gt;
	&lt;/navigation-case&gt;
	
	&lt;navigation-case&gt;
		&lt;from-action&gt;#{ArtigoBean.remover}&lt;/from-action&gt;
		&lt;from-outcome&gt;falha&lt;/from-outcome&gt;
		&lt;to-view-id&gt;/site/artigoConsulta.jsp&lt;/to-view-id&gt;
	&lt;/navigation-case&gt;
&lt;/navigation-rule&gt;

vc sabe que tem que chamar as paginas com .jsf ne?!?!
tipo loging.jsf

outra coisa, de uma olhada no projeto do myfaces, la tem exemplo e vai lhe poupar muito trabalho, pois essa implementação é muito fraca

http://myfaces.apache.org

urubatan

pelo erro, parece que você esta digitando o endereço .jsp e não .jsf como esta mapeado para o servlet do faces.

Criado 8 de junho de 2007
Ultima resposta 11 de jun. de 2007
Respostas 2
Participantes 3