Bom dia pessoal!
Estou estudando pelo livro Aplicações Java para Web com JSF e JPA, e estou travado no formulário do Capítulo 3. Fiz pequenas adaptações para desenvolver uma biblioteca, mas nada que alterasse a estrutura do exemplo apresentado no livro. Enfim, quando terminei a página xhtml e a carreguei no navegador, os elementos PanelGrid e InputText não funcionaram. O resultado ficou como apresentado na figura a seguir. Estou desenvolvendo a aplicação no NetBeans 8.1.
Desde já agradeço qualquer ajuda prestada!
Abraços!
O código da páguna index.xhtml:
<?xml version="1.0" encoding="UTF-8"?>
<head>
<title>Livraria Espírita</title>
</head>
<h:body>
<h:form>
<h:panelGrid columns="2">
Título: <h:inputText value="#{livroBean.livro.titulo}" />
Autor: <h:inputText value="#{livroBean.livro.autor}" />
Espírito: <h:inputText value="#{livroBean.livro.espirito}" />
Tradutor: <h:inputText value="#{livroBean.livro.tradutor}" />
Editora: <h:inputText value="#{livroBean.livro.editora}" />
Edição: <h:inputText value="#{livroBean.livro.anoEdicao}" />
ISBN: <h:inputText value="#{livroBean.livro.isbn}" />
<h:commandButton value="Salvar" action="#{livroBean.salva}"/>
</h:panelGrid>
</h:form>
<br />
</h:body>
A saída apresentada no navegador Firefox:
Você colocou a tag html ? No código que você postou não aparece. O resto parece ok.
Olá Gracyane!
Coloquei sim. Não sei porque não carregou aqui. O código está da mesma forma como apresentado no livro. Só mudei os campos do formulário.
Abraços!
Como está sua classe Bean, qual escopo você está utilizando ?
Boa noite Gracyane!
Segue abaixo o código da classe LivroBean:
package Biblioteca;
import javax.annotation.ManagedBean;
import javax.persistence.EntityManager;
/**
*
-
@author alfredo
*/
@ManagedBean
public class LivroBean {
private LivroPOJO livro = new LivroPOJO();
public LivroPOJO getLivroPOJO() {
return this.livro;
}
public void setLivroPOJO(LivroPOJO livro) {
this.livro = livro;
}
public void salva(){
EntityManager em = JPAUtil.getEntityManager();
em.getTransaction().begin();
em.persist(livro);
em.getTransaction().commit();
em.close();
}
}
Coloque @RequestScoped após @ManagedBean.
Existem outros escopos, esse a cada requisição um novo bean e criado.
Você fez o import do @ManageBean do pacote errado.
o pacote certo é: import javax.faces.bean.ManagedBean;
Ps: Eu havia sugerido acima colocar o @RequestScoped, se quiser pode tirar, acho qua mais pra frente no livro o autor deve explicar qual escopo você deve utilizar.
Olá Gracyane.
A página continua não sendo renderizada corretamente. Acredito que o problema esteja em algum aspecto mal definido no arquivo index.xhtml. Não consigo ver o que pode ser. Para mim está correto, pois segue fielmente o exemplo do livro.
O cabeçalho do seu arquivo index.xhtml está diferente da do livro?
Não deixe espaço entre o xmlns
acho que o padrão é:
Olá Gracyane.
Consegui resolver o problema! O endereço passado para o contâiner estava como http://localhost:8080/BibliotecaEspirita/index.xhtml, quando deveria estar como http://localhost:8080/BibliotecaEspirita/faces/index.xhtml. Fiz a configuração devida no arquivo web.xml e funcionou perfeitamente. O formulário de cadastro dos livros apareceu na página no navegador.
Aproveitando uma dica sua, vou criar uma conta do github e tentar integrar meu IDE com ela. Vai ser uma experiência de estudo bastante interessante!
Gostaria de agradecer toda a ajuda que você me prestou. As dicas apresentadas foram extremamente valiosas. Valeu mesmo!
Obrigado!
Abraços!