Estou com o seguinte problema: desejo buscar os dados de uma JTable e setar cada uma das Linhas em um JavaBean e, logo após, adicionar tais JavaBeans a um List.
O problema é que tudo isto deve ser feito de maneira genérica, servindo para qualquer tipo de tabela. Aqui já conseguimos fazer o bind de TextFields e TextAreas sem problemas, utilizando reflection.
Alguém tem alguma sugestão de como fazer o bind de uma linha da JTable a um JavaBean de forma genérica, de modo a funcionar com qualquer JTable e com qualquer JavaBean?
Obs.: Já pesquisamos o Genesis, porém ele não atende nossas necessidades, devido ao framework de validação que construímos aqui.
E pelo que eu li sobre o genesis, ele atualiza o estado do meu bean automaticamente com o estado da tela, porém após validar o sistema, o conteúdo do formulário em alguns campos é apagado e quando o genesis atualizar o bean, o dados serão perdidos, desta forma não é possível utilizá-lo.
Estou correto em relação ao genesis neste quesito?
Pelo menos foi isso que eu entendi pela leitura que fiz da documentação.
E pelo que eu li sobre o genesis, ele atualiza o estado do meu bean automaticamente com o estado da tela, porém após validar o sistema, o conteúdo do formulário em alguns campos é apagado e quando o genesis atualizar o bean, o dados serão perdidos, desta forma não é possível utilizá-lo.
Estou correto em relação ao genesis neste quesito?
Pelo que eu entendi até aqui, na verdade, não. O genesis apenas mantém a sincronia dos campos para os quais é feito o binding. Entendo que para os campos desabilitados (caso 2), o conteúdo ficará visível. Existem várias maneiras de fazer com que tanto o genesis como o framework de segurança funcionem corretamente:
No caso 3, remova o componente da interface ou mude o seu name. Dessa forma, o genesis não o encontrará e não haverá sincronia entre eles.
Customize o binding para ignorar os componentes que não devem ser habilitados. Basta para isso prover uma implementação de LookupStrategy que despreze os componentes não relevantes para o usuário atual. A documentação de LookupStrategy explica como fazer isso.
Um pouco mais difícil, mas também mais interessante a longo prazo seria expor as regras de segurança através do FormMetadata do seu form, que é o mecanismo do próprio genesis para habilitar/desabilitar e tornar visível/invisível determinado widget.