Erro em JAVAWEB - Target Unreachable, identifier 'allBean' resolved to null

10 respostas
programaçãojsfjava
M

Ao executar o programa e colocar os dados na web, aparece o seguinte erro:
/cadastropessoa.xhtml @12,67 value="#{allBean.p.nome}": Target Unreachable, identifier ‘allBean’ resolved to null

já procurei em todos os lugares o erro e não encontro. já refiz o programa até em outro computador e nada.

seguem as classes:

cadastropessoa.jsf:

<?xml version='1.0' encoding='UTF-8' ?> Cadastro pessoa
<h:inputHidden> </h:inputHidden>
            <h:commandButton value="Cadastrar" action="#{allBean.cadastrar()}"></h:commandButton>
        </h:panelGrid>
    </h:form>
</h:body>

allBean:
package br.edu.ifba.bean;

import br.edu.ifba.entidades.Pessoa;

import java.util.ArrayList;

import javax.inject.Named;

import javax.faces.bean.ManagedBean;

import javax.faces.view.ViewScoped;

/**
*

  • @author Milena
    
    */
    
    @//Named(value = “allBean”)
    
    @//ManagedBean
    
    @//ViewScoped
    
    public class allBean {
    
    private ArrayList pessoas = new ArrayList<>();
    
    Pessoa p = new Pessoa();
    

    public allBean() {
    }

    public ArrayList getPessoas() {
    
    return pessoas;
    
    }
    
    public void setPessoas(ArrayList pessoas) {
    
    this.pessoas = pessoas;
    
    }
    
    public Pessoa getP() {
    
    return p;
    
    }
    
    public void setP(Pessoa p) {
    
    this.p = p;
    
    }
    
    public void cadastrar(){
    
    Pessoa aux = new Pessoa();
    
    System.out.println(NOME:+p.getNome());
    
    aux.setNome(p.getNome());
    
    aux.setCpf(p.getCpf());
    
    aux.setNomefantasia(p.getNomefantasia());
    
    aux.setCnpj(p.getCnpj());
    
    aux.setEndereco(p.getEndereco());
    
    aux.setNumero(p.getNumero());
    
    aux.setBairro(p.getBairro());
    
    aux.setMunicipio(p.getMunicipio());
    
    aux.setCep(p.getCep());
    
    pessoas.add(aux);
     p.setNome("");
     p.setCpf("");
     p.setNomefantasia("");
     p.setCnpj("");
     p.setEndereco("");
     p.setNumero("");
     p.setBairro("");
     p.setMunicipio("");
     p.setCep("");
    

    }

    public void imprimirPrompt(){
    
    for(Pessoa x: pessoas){
    
    System.out.println("Nome: "+p.getNome());
    
    System.out.println("Cpf: "+p.getCpf());
    
    System.out.println("Nome Fantasia: "+p.getNomefantasia());
    
    System.out.println("CNPJ: "+p.getCnpj());
    
    System.out.println("Endereço: "+p.getEndereco());
    
    System.out.println("Número: "+p.getNumero());
    
    System.out.println("Bairro: "+p.getBairro());
    
    System.out.println("Município: "+p.getMunicipio());
    
    System.out.println("CEP: "+p.getCep());
    
    }
    
    }
    

}

10 Respostas

M

Se você for usar @ManagedBean, você tem que usar o @ViewScoped do javax.faces.bean

Você quis comentar as anotações para postar aqui ou não? O @ esta fora da parte comentada
Esse erro já aconteceu várias vezes aqui, acredite ou não, eu só tive que reiniciar o eclipse e ai o código voltou a funcionar kk

M

Você não colou a página toda né?

Os arquivos tem que ser com a extensão xhtml

A

Não esta achando o bean…

troque:

@//Named(value = “allBean”)
@//ManagedBean
@//ViewScoped

Por

@ManagedBean(name = “allBean”)
@ViewScoped

M

coloquei os “//” para postar aqui mesmo, mas no código está sem as barrinhas. antes eu estava usando o bean como session, coloquei o view para testar e ambas formas não deram certo :confused:

M

Você pode postar do jeito que esta ai?Sem as barras pro post

Certifique-se de colocar todo o código entre tag [code] [/c ode]

M

cadastropessoa.jsf:

<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Cadastro pessoa</title>
    </h:head>
    <h:body>
        <h:form>
            <h:panelGrid columns="2">
                <h:outputLabel value="Nome:" ></h:outputLabel>
                <h:inputText title="nome" id="nome" value="#{allBean.p.nome}"></h:inputText>
                
                <h:inputHidden> </h:inputHidden>
                <h:commandButton value="Cadastrar" action="#{allBean.cadastrar()}"></h:commandButton>
            </h:panelGrid>
        </h:form>
    </h:body>
</html>

allBean:

package br.edu.ifba.bean;

import br.edu.ifba.entidades.Pessoa;
import javax.faces.bean.SessionScoped;
import javax.faces.bean.ManagedBean;
import java.io.Serializable;
import java.util.ArrayList;

/**
 *
 * @author Milena
 */
@ManagedBean
@SessionScoped
public class allBean implements Serializable {
    private ArrayList<Pessoa> pessoas = new ArrayList<>();
    Pessoa p = new Pessoa();
    
    public allBean() {
    }    

    public ArrayList<Pessoa> getPessoas() {
        return pessoas;
    }

    public void setPessoas(ArrayList<Pessoa> pessoas) {
        this.pessoas = pessoas;
    }

    public Pessoa getP() {
        return p;
    }

    public void setP(Pessoa p) {
        this.p = p;
    }
    
    public void cadastrar(){
        Pessoa aux = new Pessoa();
        System.out.println("NOME:"+p.getNome());
        aux.setNome(p.getNome());
        aux.setCpf(p.getCpf());
        aux.setNomefantasia(p.getNomefantasia());
        aux.setCnpj(p.getCnpj());
        aux.setEndereco(p.getEndereco());
        aux.setNumero(p.getNumero());
        aux.setBairro(p.getBairro());
        aux.setMunicipio(p.getMunicipio());
        aux.setCep(p.getCep());
        
        pessoas.add(aux);
        p.setNome("");
        p.setCpf("");
        p.setNomefantasia("");
        p.setCnpj("");
        p.setEndereco("");
        p.setNumero("");
        p.setBairro("");
        p.setMunicipio("");
        p.setCep("");        
    }
    
    public void imprimirPrompt(){
        for(Pessoa x: pessoas){
            System.out.println("Nome: "+p.getNome());
            System.out.println("Cpf: "+p.getCpf());
            System.out.println("Nome Fantasia: "+p.getNomefantasia());
            System.out.println("CNPJ: "+p.getCnpj());
            System.out.println("Endereço: "+p.getEndereco());
            System.out.println("Número: "+p.getNumero());
            System.out.println("Bairro: "+p.getBairro());
            System.out.println("Município: "+p.getMunicipio());
            System.out.println("CEP: "+p.getCep());
        }
    }
}
M

Você escreve isso na url ou o seu arquivo chama cadastropessoa.jsf?
Pq eu nunca vi um arquivo.jsf, eu só vi .jsp ou .xhtml

<servlet-mapping>
    <servlet-name>Faces Servlet</servlet-name>
    <url-pattern>*.xhtml</url-pattern>//Como esta essa sua tag no arquivo web.xml?
  </servlet-mapping>
M

O código do bean dela esta correto para fazer funcionar.
Se esta codificado da maneira correta é outra coisa…

Primeiro tem que focar em fazer funcionar

M

o meu arquivo é cadastropessoa.xhtml
mas há a classe index.xhtml onde o código está da seguinte forma:

<?xml version='1.0' encoding='UTF-8' ?>
<!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:h="http://xmlns.jcp.org/jsf/html">
    <h:head>
        <title>Facelet Title</title>
    </h:head>
    <h:body>
        <h:form>
            <a href="cadastropessoa.jsf">Cadastrar pessoa</a>
            <a href="sobre.jsf">Sobre</a>
        </h:form>
    </h:body>
</html>

no arquivo web.xl está assim:

<servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>*.jsf</url-pattern>
</servlet-mapping>
M

Eu não encontrei nenhum erro que poderia causar o Target Unreachable, então criei um projeto e colei o seu código e aqui funcionou corretamente…

Faz o que eu disse no primeiro post:

Criado 25 de maio de 2018
Ultima resposta 25 de mai. de 2018
Respostas 10
Participantes 3