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 etcO 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?
 
            