Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre LazyDataModel e Filtro.

Olá,

Minha aplicação estava funcionando corretamente até implementar LazyDataModel e Filtro de gênero.

Agora quando tentou editar um livro ou remover um livro sem venda, nada acontece.

Os métodos de carregar e remover o livro não estão sendo chamados.

Pesquisei mas não não encontrei solução.

A seguir meu repositório: https://gitlab.com/cviniciusm/jsf-livraria

2 respostas

Oi Cassius

Analisei seu projeto, e o que está ocorrendo com ele é o seguinte:

O Problema é que você está injetando seu LivroDataModel que é do escopo de Request dentro do seu bean LivroBean que é do escopo de View.

Para resolver remova a declaração de escopo do seu LivroDataModel quando você não define um escopo, o CDI assume que o escopo padrão será Dependent ou seja ele usará o mesmo escopo da classe que ele está sendo injetado.

Nesse caso como você está injetando seu LazyDataModel que tem o escopo Dependent dentro do seu bean LivroBean que tem o escopo ViewScoped seu LazyDataModel terá o escopo ViewScoped.

Para você entender o que ocorreu segue uma breve explicação:

Ao clicar no botão de editar ou remover é gerado uma nova request e criado um novo LivroDataModel, e com isso recriado toda a DataTable. Por tanto o botão que você clicou não existe mais pois teve de ser recriado. Dessa forma não executando seu método.

Se útil marque como solução.

solução!

Olá,

Muito obrigado pela atenção.

Eu tinha feito o que você citou como tentativa e erro.

Em verdade, não havia implementado getRowKey() e nem getRowData(). Depois que fiz isso, agora está funcionando.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software