Erro de jsf

Ocorre este erro quando eu clico no botão gravar.
HTTP Status 500 - javax.el.PropertyNotFoundException: /livro.xhtml @20,68 action="#{livroBean.gravar}": Target Unreachable, identifier ‘livroBean’ resolved to null.

código livro.xhtml
<?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://java.sun.com/jsf/html">
<h:body>
	<h1>Novo Livro</h1>
	<h:form>
		<h:message />
		<fieldset>
			<legend>Dados do Livro</legend>
			<h:panelGrid columns="1">
				<h:outputLabel value="Titulo:" for="titulo" />
				<h:inputText id="titulo" />
				<h:outputLabel value="ISBN:" for="isbn" />
				<h:inputText id="isbn" />
				<h:outputLabel value="Preço:" for="preco" />
				<h:inputText id="preco" />
				<h:outputLabel value="Data de Lançamento:" for="dataDeLancamento" />
				<h:inputText id="dataDeLancamento" />
				<h:commandButton value="Gravar" action="#{livroBean.gravar}" />
			</h:panelGrid>
		</fieldset>
	</h:form>
</h:body>

</html>
Classe LivroBean
package br.com.caelum.livraria.bean;

import javax.faces.bean.ManagedBean;

@ManagedBean
public class LivroBean {

	public void gravar() {
		System.out.println("Livro Gravado!");
	}
}

Teoricamente não precisaria, mas tenta forçar colocando o name para ver se vai

ManagedBean (name=“LivroBean”)

Class {

}

Segui o que vocÊ disse e ainda persiste o erro :frowning:

`
tenta isso:

< h:message id =mensagens />
< h:commandButton value=“Gravar” actionListener="#{livroBean.gravar( )}" update =@form />

@ManagedBean
@ViewScoped
public class LivroBean implements Serializable{

public void gravar( ){
FacesContext.getCurrentInstance().addMessage(“mensagens”, new FacesMessage(FacesMessage.SEVERITY_INFO, “Gravar”, “Livro Gravado!”));
}

}

`

Opa vlw amigo deu certo :slight_smile:

1 curtida