Ainda não tem acesso? Estude com a gente! Matricule-se
Ainda não tem acesso? Estude com a gente! Matricule-se

Solucionado (ver solução)

AdminLivrosBean resolved to null

Olá pessoal,

Alguém pode me dar uma força pra entender o porque do Bean não estar sendo instanciado ?

O Bean:

package main.java.br.com.casadocodigo.beans;

import javax.inject.Named;

import main.java.br.com.casadocodigo.models.Livro;

@Named
public class AdminLivrosBean {

    private Livro livro;

    public Livro getLivro() {
        return livro;
    }

    public void setLivro(Livro livro) {
        this.livro = livro;
    }


    public void salvar() {
        System.out.println("Livro cadastrado:" + this.livro);
    }
}

O formulário

<!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"
    xmlns:f="http://xmlns.jcp.org/jsf/core">

<h:form>
    <div>
        <h:outputLabel value="Titulo"></h:outputLabel>
        <h:inputText value="#{adminLivrosBean.livro.titulo}"/>
    </div>
    <div>
        <h:outputLabel value="Descricao"></h:outputLabel>
        <h:inputTextarea value="#{adminLivrosBean.livro.descricao}" rows="4" cols="20"/>
    </div>
    <div>
        <h:outputLabel value="Numero de paginas"></h:outputLabel>
        <h:inputText value="#{adminLivrosBean.livro.numeroPaginas}"/>
    </div>
    <div>
        <h:outputLabel value="Preco"></h:outputLabel>
        <h:inputText value="#{adminLivrosBean.livro.preco}"/>
    </div>
    <h:commandButton value="Cadastrar"></h:commandButton>

</h:form>
</html>

O erro:

...
Caused by: javax.el.PropertyNotFoundException: /livros/form.xhtml @11,57 value="#{adminLivrosBean.livro.titulo}": Target Unreachable, identifier 'adminLivrosBean' resolved to null
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:100)
    at com.sun.faces.renderkit.html_basic.HtmlBasicInputRenderer.getConvertedValue(HtmlBasicInputRenderer.java:95)
    at javax.faces.component.UIInput.getConvertedValue(UIInput.java:1045)
    at javax.faces.component.UIInput.validate(UIInput.java:975)
    at javax.faces.component.UIInput.executeValidate(UIInput.java:1248)
    at javax.faces.component.UIInput.processValidators(UIInput.java:712)
    at javax.faces.component.UIForm.processValidators(UIForm.java:253)
    at javax.faces.component.UIComponentBase.processValidators(UIComponentBase.java:1261)
    at javax.faces.component.UIViewRoot.processValidators(UIViewRoot.java:1195)
    at com.sun.faces.lifecycle.ProcessValidationsPhase.execute(ProcessValidationsPhase.java:76)
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198)
    at javax.faces.webapp.FacesServlet.service(FacesServlet.java:658)
    ... 37 more
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'adminLivrosBean' resolved to null
    at com.sun.el.parser.AstValue.getTarget(AstValue.java:173)
    at com.sun.el.parser.AstValue.getType(AstValue.java:85)
    at com.sun.el.ValueExpressionImpl.getType(ValueExpressionImpl.java:201)
    at org.jboss.weld.el.WeldValueExpression.getType(WeldValueExpression.java:93)
    at org.jboss.weld.el.WeldValueExpression.getType(WeldValueExpression.java:93)
    at com.sun.faces.facelets.el.TagValueExpression.getType(TagValueExpression.java:98)
    ... 49 more

Já tentei atribuir um nome (@Named(value="nome")) ao bean e invoca-lo por ele. Já usei o "clean" no eclipse e no servidor para garantir que a versão mais atual do código foi compilada e subida para o server, mas ainda sim recebo essa mensagem. Algum ideia do porque ?

Obrigado!

2 respostas

up up ?

solução

Oi Daniel, tudo bem?

Coloque o <h:form> dentro de um <h:body>, deve resolver =)

Abraço!