Estou desenvolvendo um sistema simples com funções de novo, excluir e editar. Eu vim aqui porque eu preciso de sugestões com boas práticas de como posso fazer isso. Inicialmente pensei em usar uma caixa de diálogo do Primefaces para adicionar novos e editar os registros. No entanto, vi que não é uma boa alternativa, não achei muito confiável, certo?
Agora, acredito que usar três páginas seja uma boa solução, vai ser assim:
EntityManagementView.xhtml (será colocado os botões CRUD)
ManagerEntity.xhtml (é a ficha da entidade, permite edição e inserção)
ListEntity.xhtml (lista com todas as entidades)
O que acham?
EntityManagementView.xhtml:
<h:body>
<ui:insert id="entity" name="centro">
... here my manager and list
</ui:insert>
</h:body>
</html>
Estou com o mesmo dilema e ainda não cheguei a uma conclusão definitiva.
A vantagem (que eu vejo) de fazer a inclusão e alteração em um p:dialog é que assim é possível atualizar a p:datatable por ajax e não precisa recarregar a tela.
A desvantagem (que eu vejo) é que fica mais engessado e tem que duplicar código. Como fazer por exemplo para cadastrar um cliente a paritr do menu e dentro de um pedido de vendas por exemplo (usando o mesmo xhtml)
São alguns pontos que pensei…gostaria de ver outros…
O que você quis dizer com “não achei muito confiável, certo?”
Eu achei a ideia de utilizar o dialog para essas operações muito boa. O problema é que logo de cara tive alguns problemas para fazer funcionar a função modal desse componente, estudando um pouco descobri a necessidade de utilizar a propriedade appendToBody=“true”. Beleza, adicionei ela e o modal funcionou corretamente. O problema é que depois disso os meus inputText, dentro do dialog não estavam conseguindo popular os atributos da minha classe entidade, no MB. Resumindo tive que arrancar o appendToBody="true"e consequentemente o modal=“true” para funcionar.
Através de algumas pesquisas na internet e no fórum do primefaces, tive como sugestão utilizar o ui:insert . Através de todo esses argumentos positivos e negativos, comecei a repensar o uso do dialog, até mesmo para evitar futuras dores de cabeça.
[quote=cgraf]Estou com o mesmo dilema e ainda não cheguei a uma conclusão definitiva.
A vantagem (que eu vejo) de fazer a inclusão e alteração em um p:dialog é que assim é possível atualizar a p:datatable por ajax e não precisa recarregar a tela.
A desvantagem (que eu vejo) é que fica mais engessado e tem que duplicar código. Como fazer por exemplo para cadastrar um cliente a paritr do menu e dentro de um pedido de vendas por exemplo (usando o mesmo xhtml)
São alguns pontos que pensei…gostaria de ver outros…
O que você quis dizer com “não achei muito confiável, certo?”
Não necessariamente vc precisa ter um dialog para fazer um update e um insert e atualizar o datatable sem recarregar a página toda, vc pode ter um formulario acima e uma tabela a baixo e atualizar ela normalmente via ajax e quanto ao menu, vc pode criar panels que manipular eles conforme o clique no menu, mostrando ou escondendo sem precisar, mais não é muito elegante trabalhar dessa maneira, prefiro ter um menu individual na index e chamar as paginas individuais e ter o formulario com o crud e abaixo o datatable, mais claro, tudo isso vai depender do layout do sistema e arquitetura.
Se eu entendi direito a dúvida acho que não falei besteira, hehehe
Por traz dessas 3 páginas, tenho todo o meu template definido. Nesse template principal tenho um espaço para o meu principal e logo abaixo o centro, onde serão apresentados os meus casos de uso. Essas 3 páginas seriam apenas para cada caso de uso que eu for criar.
O fluxo de trabalho para cadastrar novos registros seria:
1 - Sistema exibe no centro lista de pessoas;
2 - Usuário clica no botão NOVO;
3 - Sistema abre no centro cadastro de pessoas;
4 - Usuário preenche dados e clica em SALVAR;
5 - Sistema exibe no centro lista de pessoas atualizada.
[quote=diogo soares]Não necessariamente vc precisa ter um dialog para fazer um update e um insert e atualizar o datatable sem recarregar a página toda, vc pode ter um formulario acima e uma tabela a baixo e atualizar ela normalmente via ajax e quanto ao menu, vc pode criar panels que manipular eles conforme o clique no menu, mostrando ou escondendo sem precisar, mais não é muito elegante trabalhar dessa maneira, prefiro ter um menu individual na index e chamar as paginas individuais e ter o formulario com o crud e abaixo o datatable, mais claro, tudo isso vai depender do layout do sistema e arquitetura.
Se eu entendi direito a dúvida acho que não falei besteira, hehehe[/quote]
Diogo, interessante a tua abordagem de ter formulario acima e uma tabela abaixo. Tinha pensado nisso para cruds pequenos…
Assim no mesmo xhtml você tem o form e a datatable… Só uma última pergunta:
Você usa esta abordagem para todos os cruds, digo, os grandes também? Tipo clientes, notas fiscais, pedidos, etc?
Te pergunto porque é um pouco complicado passar do mundo desktop para web…e não dá para ver como o pessoal implementa porque normalmente os cruds não estão acessíveis publicamente na web…