Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

ERRO: Target Unreachable, identifier 'LivroBean' resolved to null Dados do Livro

Pessoal,

Fiz a inclusão da validação do campo ISBN (comecaComDigitoUm) e a seguinte menagem aparece após clicar no botão gravar autor:

Erro na tela do browse:

/livro.xhtml @22,104 validator="#LivroBean.comecaComDigitoUm}": Target Unreachable, identifier 'LivroBean' resolved to null

Livro.xhtml:

<h:inputText id="isbn" value="#{livroBean.livro.isbn}" validator="#{LivroBean.comecaComDigitoUm}"/>

LivroBean.java:

package br.com.caelum.livraria.bean;

import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;

import br.com.caelum.livraria.dao.DAO;
import br.com.caelum.livraria.modelo.Autor;
import br.com.caelum.livraria.modelo.Livro;

@ManagedBean
@ViewScoped

//... trecho do código omitido.../

public void comecaComDigitoUm(FacesContext fc, UIComponent component, Object value) throws ValidatorException {
        String valor = value.toString();

        if(!valor.startsWith("1")) {
            throw new ValidatorException(new FacesMessage("Deveria começar com 1"));
        }

    }

Já revisei meu código e busquei informação nas mensagens antigas do forum sem sucesso.

Alguém pode me ajudar?

Obrigado,

4 respostas

Estou com esse mesmo problema aqui, quebrando a cabeça...

solução!

Oi Alexandre,

o problema está aqui:

validator="#{LivroBean.comecaComDigitoUm}"

deve ser:

validator="#{livroBean.comecaComDigitoUm}"

Por padrão você usa o nome da classe na Expression Language, mas começando com letra minúscula.

abs

Eu fiz desta forma, e funcionou... vou te mandar:

    <h:outputLabel value="ISBN:" for="isbn" />
    <h:inputText id="isbn" value="#{livroBean.livro.isbn}" validator="#{livroBean.comecaComDigitoUm}"/>

e no LivroBean:

    public void comecaComDigitoUm(FacesContext fc, UIComponent component, Object value)
        throws ValidatorException {
        String valor = value.toString();
        if (!valor.startsWith("1")) {
            FacesMessage mensagem = new FacesMessage("Deveria começar com 1");
            mensagem.setSeverity(FacesMessage.SEVERITY_ERROR);
            throw new ValidatorException(mensagem);
        }
    }

Nico, problema resolvido. Obrigado. Marcos, obrigado também por postar seu código. Aproveitei um parte.

abraços