1
resposta

Dúvida sobre a funcionalidade do metadata do livro.shtml

Essa parte ficou de fora desse curso tão segmentado e atribulado... Vamos lá Temos essa metadata no livro.xhtml:

<f:metadata>
    <f:viewParam name="livroId" value="#{livroBean.livro.id}" />
    <f:viewAction action="#{livroBean.carregarLivroPelaId}" if="#{param.livroId != null}" />
</f:metadata>

livro.java:

@ManagedBean
@ViewScoped
public class LivroBean  {
//outros atributos...
    private Livro livro = new Livro();
...
    public void carregarLivroPelaId() {
        this.livro = new DAO<Livro>(Livro.class).buscaPorId(this.livro.getId()); 
    }
...//outros métodos etc

O que consigo ler daí é que temos um parametro ligado ao id do livro do livroBeam e qu toda vez que o livro do livroBeam tiver algum id (não nulo) o metodo carregarLivroPelaId será chamado carregando o próprio livro. Não entendi o porquê disto>. Se o livro do livroBeam já tem id para que carregar de novo do bando de dados? Se ele já tem id é prova que já foi cadastrado e não está apenas no formulário, ou seja ele já veio do banco. Pra que isto então?

1 resposta

Bom dia. Pelo que entendi no curso de JSF 1 esse metadado diz respeito a utilizar a busca por livro na URL com um parâmetro da forma:

http://url/livro?id=x

Para que essa busca funcione sem dar crash na aplicação é necessário que o Id passado como parâmetro não seja nulo, por isso tem esse if aí.