Pessoal, Boa Noite,
Tem um problema que sempre encontro em projetos e acabam sendo solucionados com formas “paliativas” e gostaria de saber se existe um boa prática para essas situações.
Imaginem um objeto que possui um atributo que é uma lista (Pode ser pessoa e telefone por exemplo) em uma tela JSF onde teria a lista de pessoas, clicando nela um modal onde iria adicionar e remover os itens da lista.
Os atributos da entidade estão sendo “bindados” diretamente na página. Até tranquilo. Porém é requisito do negócio que eu possa cancelar a operação que estou executando na lista. O problema é que tudo isso ocorre em memória, o usuário irá confirmar lá no final depois de adicionar/remover itens de N objetos.
O que acontece, no cancelar eu poderia dar refresh no objeto. Mas o usuário pode abrir a lista, editar, confirmar (ou seja, ele confirmou as alterações e o objeto do banco já está defasado perante o da tela). Ele abre de novo a mesma lista e apenas olha e cancela (o cancelar não pode dar refresh nesse caso).
Isso é apenas uma combinação de operações que tenho dificuldade de manipular devido a esse controle em memória do estado do objeto. Alguém sabe se existe algum padrão ou boa prática para isso? Já inventei de criar inner class no objeto para controlar o estado anterior (tipo um memento) e implementar um save, restore, update (ou seja, recriando a roda). Já criei listas a parte nos managed beans e por aí vai.
Alguém já entrou nessa situação? Como resolveram?
Falou