[Java para Web com JFS e JPA] Página XHTML não carrega (Resolvido)

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!