Target Unreachable - JSF

Fala aí pessoal, blz? Seguinte estou criando uma aplicação e estou usando JSF mas estou tendo um problema. Quando vou fazer o deploy de minh aplicação surge a seguinte exception:

org.apache.catalina.core.ApplicationDispatcher invoke
SEVERE: Servlet.service() for servlet jsp threw exception
org.apache.jasper.el.JspPropertyNotFoundException: /Login.jsp(15,16) '#{Login.usuario}' Target Unreachable, identifier 'Login' resolved to null
        at org.apache.jasper.el.JspValueExpression.setValue(JspValueExpression.java:91)
        at com.sun.faces.application.ApplicationImpl.createComponent(ApplicationImpl.java:213)
        at javax.faces.webapp.UIComponentELTag.createComponent(UIComponentELTag.java:211)
        at javax.faces.webapp.UIComponentClassicTagBase.createChild(UIComponentClassicTagBase.java:476)
        at javax.faces.webapp.UIComponentClassicTagBase.findComponent(UIComponentClassicTagBase.java:660)
        at javax.faces.webapp.UIComponentClassicTagBase.doStartTag(UIComponentClassicTagBase.java:1111)
        at com.sun.faces.taglib.html_basic.InputTextTag.doStartTag(InputTextTag.java:419)
        at org.apache.jsp.Login_jsp._jspx_meth_h_005finputText_005f0(Login_jsp.java:241)
        at org.apache.jsp.Login_jsp._jspx_meth_h_005fform_005f0(Login_jsp.java:162)
        at org.apache.jsp.Login_jsp._jspx_meth_f_005fview_005f0(Login_jsp.java:120)
        at org.apache.jsp.Login_jsp._jspService(Login_jsp.java:83)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:393)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:320)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:654)
        at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:445)
        at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:379)
        at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:292)
        at com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:408)
        at com.sun.faces.application.ViewHandlerImpl.executePageToBuildView(ViewHandlerImpl.java:439)
        at com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:114)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:106)
        at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:251)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:144)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:245)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:368)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:230)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:261)
        at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:844)
        at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:581)
        at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
        at java.lang.Thread.run(Thread.java:619)

O Código de meu bean é esse:

[code]
public class Login {

private AuthenticationController authenticationController = null;

private String usuario;
private String senha;

/** Creates a new instance of Login1 */
public Login() {        
    authenticationController = (AuthenticationController) ServiceDelegate.getInstancia().obtemServico("authenticationController");
}

public String login() {
    return authenticationController.autenticar(usuario, senha);
}

public String getUsuario() {
    return usuario;
}

public void setUsuario(String usuario) {
    this.usuario = usuario;
}

public String getSenha() {
    return senha;
}

public void setSenha(String senha) {
    this.senha = senha;
}

}[/code]

O meu JSP é:

<%@page contentType="text/html" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"  %>
<%@ taglib  uri="http://java.sun.com/jsf/html" prefix="h" %>

<html>
    <f:view>
        <body>
            <h:form>
                <h:inputText value="#{Login.usuario}" id="txtUsuario" required="true" style="height: 20px; left: 20px; top: 165px; position: absolute; width: 260px"/>
                <h:inputSecret value="#{Login.senha}" id="pwdSenha" required="true" style="height: 20px; left: 20px; top: 215px; position: absolute; width: 260px"/>
                <h:commandButton action="#{Login.login}" id="btnLogin" style="height: 20px; left: 19px; top: 255px; position: absolute; width: 70px" value="Login"/>
                <h:outputLabel id="staticText1" style="height: 20px; left: 20px; top: 140px; position: absolute; vertical-align: sub; width: 90px" value="Nome"/>
                <h:outputLabel id="staticText2" style="height: 15px; left: 20px; top: 195px; position: absolute; vertical-align: sub; width: 100px" value="Senha"/>
                <h:outputLabel id="staticText3" style="height: 20px; left: 260px; top: 105px; position: absolute; text-align: center; width: 260px" value="Projeto Exemplo - Arquitetura Escola"/>
                <h:graphicImage height="75" id="imgTopo1" style="height: 80px; left: 20px; top: 15px; position: absolute; width: 151px" url="/resources/topo1.jpg" width="140"/>
                <h:graphicImage height="80" id="imgTopo2" style="height: 80px; left: 170px; top: 15px; position: absolute; width: 151px" url="/resources/topo2.jpg" width="75"/>
                <h:graphicImage height="80" id="imgTopo3" style="height: 80px; left: 320px; top: 15px; position: absolute; width: 151px" url="/resources/topo3.jpg" width="75"/>
                <h:graphicImage height="30" id="imgTopo4" style="height: 80px; left: 471px; top: 15px; position: absolute; width: 151px" url="/resources/topo4.jpg" width="105"/>
                <h:graphicImage height="25" id="imgTopo5" style="height: 80px; left: 621px; top: 15px; position: absolute; width: 151px" url="/resources/topo5.jpg" width="85"/>
            </h:form>
        </body>
    </f:view>
</html>

Meu managed-beans.xml está assim:

<?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">
<faces-config>
    <!-- ... -->
    <managed-bean>
        <managed-bean-name>Login</managed-bean-name>
        <managed-bean-class>exemploescola.Login</managed-bean-class>
        <managed-bean-scope>request</managed-bean-scope>
    </managed-bean>
    <!-- ... -->
</faces-config>

E aí, alguém ajuda esse pobre mortal?

Cara,
Passei por esse problema essa semana.
O erro é que o Servlet do JSF não encontrou um objeto chamado Login.

Verifica se essa Classe Login esta realmente no pacote que tu declarou lá no faces-config.xml

O meu erro era que eu tinha declarado o nome do bean todo em minusculo no faces-config.xml e estava procurando no JSP por um com a primeira letra em maiusculo.

Resumindo em algum lugar do teu projeto tem diferenças no nome “Login”.

Cara valeu, funcionou aqui. Meu faces-config.xml estava vazio :oops:, pois peguei as configurações do Netbeans e nele tinha o managed-beans.xml e o navigation.xml separados. E a aplicação estava buscando tudo no faces-config.xml. Coloquei tudo no faces e funfou! :slight_smile:

Valeu!

A Paz!

E aí galera?! Blz?!

Seguinte: estou usando JSF + Facelets e tive este mesmo problema! No entanto, no meu caso o faces-config está configurado certinho, aparentemente! No entanto, a propriedade não está sendo alcançada, digamos assim. Aqui está o meu faces-config:

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xi="http://www.w3.org/2001/XInclude"
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">
			
  <!-- from project setup -->
  <application>
    <view-handler>
      com.sun.facelets.FaceletViewHandler
    </view-handler>    
  </application>
  
  <!-- our NumberBean we created before -->
  <managed-bean>
    <managed-bean-name>NumberBean</managed-bean-name>
    <managed-bean-class>beans.NumberBean</managed-bean-class>
    <managed-bean-scope>session</managed-bean-scope>
    <managed-property>
      <property-name>min</property-name>
      <value>1</value>
    </managed-property>
    <managed-property>
      <property-name>max</property-name>
      <value>10</value>
    </managed-property>
  </managed-bean>
  
  <!-- going from guess.xhtml to response.xhtml -->
  <navigation-rule>
    <from-view-id>/guess.xhtml</from-view-id>
    <navigation-case>
      <from-outcome>success</from-outcome>
      <to-view-id>/response.xhtml</to-view-id>
    </navigation-case>
  </navigation-rule>

  <!-- going from response.xhtml to guess.xhtml -->
  <navigation-rule>
    <from-view-id>/response.xhtml</from-view-id>
    <navigation-case>
        <from-outcome>success</from-outcome>
      <to-view-id>/guess.xhtml</to-view-id>
    </navigation-case>
  </navigation-rule>

</faces-config>

Este código é o código padrão para iniciantes em Facelets que, se não me engano, a Sun fornece. Um site simples de adivinhar o número de 1 a 10.

Se alguém puder dar uma luz, grato!

Valdemar,

Posta seu jsp, por gentileza.

Abraço

Cara, na verdade estou utilizando páginas xhtml. Aqui está o código:

guess.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html">
<body>

This text above will not be displayed.

<ui:composition template="/template.xhtml">

This text will not be displayed.

  <ui:define name="title">
    I'm thinking of a number from #{NumberBean.min} to #{NumberBean.max}.  Can you guess it?
  </ui:define>

This text will also not be displayed.

  <ui:define name="body">
    <h:form id="helloForm">
      <h:inputText type="text" id="userNo" value="#{NumberBean.guess}" validator="#{NumberBean.validate}"/>
      <br/>
      <h:commandButton type="submit" id="submit" action="success" value="Submit" />
      <br/>
      <h:message showSummary="true" showDetail="false" style="color: red; font-weight: bold;" id="errors1" for="userNo"/>
    </h:form>
  </ui:define>

This text will not be displayed.
  
</ui:composition>

This text below will also not be displayed.

</body>
</html>

Fala véio

Nunca mexi com xhtml xD

Qual o erro que dá no seu console? Que campo ele reclama? Checou se esse campo existe no NumberBean?

Abraço

Estive olhando aqui no GUJ mesmo e vi que alguém estava tendo o mesmo erro que eu. A solução sugerida foi acrescentar o seguinte trecho no cabeçalho da página xhtml (eu pus antes do DOCTYPE):

<?xml version="1.0" encoding="ISO-8859-1"?>

Mas ainda continuo tendo o seguinte erro:

com.sun.facelets.FaceletException: Could not instantiate feature[compiler.ExpressionFactory]: com.sun.el.ExpressionFactoryImpl
	at com.sun.facelets.compiler.Compiler.featureInstance(Compiler.java:152)
	at com.sun.facelets.compiler.Compiler.createExpressionFactory(Compiler.java:141)
	at com.sun.facelets.impl.DefaultFaceletFactory.createFacelet(DefaultFaceletFactory.java:190)
	at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:138)
	at com.sun.facelets.impl.DefaultFaceletFactory.getFacelet(DefaultFaceletFactory.java:89)
	at com.sun.facelets.FaceletViewHandler.buildView(FaceletViewHandler.java:401)
	at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:442)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
	at com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:286)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:845)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
	at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
	at java.lang.Thread.run(Unknown Source)

Sim, sim! Estes campos do NumberBean existem sim! Quanto a campo do NumberBean sendo “reclamado”, não existe nenhum visível no momento!

Ok! Para resolver o problema mencionado acima, depois de tanto caçar em tudo quanto é site, neste aqui:

http://markmail.org/message/7fmuqzvdxbyjn7zr#query:Facelets%3A%20Could%20not%20instantiate%20feature%5Bcompiler.ExpressionFactory%5D%3A%20com.sun.el.ExpressionFactoryImpl+page:1+mid:nt5wv24jyvmflrfx+state:results

eu achei a resposta. É porque para utilizar Facelets, aparentemente, é necessário ter a seguinte dupla de jars no diretório lib: el-api.jar e el-impl.jar.

Então: Voilà (Acho que assim mesmo que escreve! Credo! Tô mals de escrita)! Funcionou! O problema é que passei por tantos erros (além destes que postei) que estou até meio perdido a respeito de que bibliotecas eu realmente devo ou não colocar no meu projeto que usa Facelets, o que tem haver Facelets com MyFaces, Trinidad, Tobago! Puts, é muita coisa! Mas enfim: depois de um dia inteiro de trabalho, pelo menos está funcionando!

Obrigado ao companheiro aí por tentar resolver minha dúvida!

Flws! :smiley:

Nada :smiley: Que bom que achou a solução!

Alterem o nome do tópico pra resolvido :slight_smile:

Abraço