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!