1 de agosto de 2008

Struts 1.x.x

Bom pessoal, Struts está no passado, deveria estar morto, mas ainda existem milhares de sistemas legados.
Hoje estarei falando de uma prática meio particular de desenvolvimento que ando vendo por aqui e em outros sistemas legados pelos quais já passei.


Tratando Seus objetos do Bean sem copy/paste no Form.

Hoje o que temos em alguns sistemas legados é um grande copy/paste do bean no form ou seja:

Exemplo:
public class Pessoa {
private Integer id;
private String nome;
private String endereco;
private Integer idade;
// getters e setters
}


Esse é um simples Bean Pessoa.java com seus getters and Setters.

Mas quando vamos criar o Form olha só:
PessoaForm
Integer id;
String nome;
String endereço;
Integer idade;
//getters and setters
void validate(){
//aqui validadores
}
Isso é muito feio, um jeito bonito de resolver seria:
PessoaForm
Pessoa pessoa = new Pessoa();
//getters and setters
void validate(){
//aqui validadores
}

No final nossas Actions de CRUD ficariam muito mais fáceis:
IncluirPessoaAction
PessoaForm pessoaForm = (PessoaForm)form;
Pessoa pessoa = pessoaForm.getPessoa();
pessoaDAO.inserirPessoa(pessoa);
No final, somente iria mudar a chamada do método nas outras actions, como excluirPessoa, alterarPessoa, selecionarPessoa.

E a chamada no JSP?
pessoa.jsp
<html:text property="pessoa.nome" size="60" name="pessoaForm" maxlength="50" styleId="txtNome"/>

Parece mais trabalhoso no JSP do que se tivéssemos copiado os atributos do Bean, mudado tudo para String, mas na realidade, não precisaremos mais ficar dando casts desnecessários, as validações ficariam restritas no Form e o mesmo iria ficar visivelmente mais limpo.

Se um dia o Bean aumentar, ou seja, implementar novos atributos a atualização disto será bem mais simples...


Caso seu Bean chame um outro objeto, ou seja, um outro Bean trate-o como no exemplo abaixo:
Eemplo:
Bean
PessoaFisica
Integer id;
Pessoa pessoa = new Pessoa();
//getters and setters


Form
PessoaFisicaForm
PessoaFisica pessoaFisica = new PessoaFisica();
//getters and setters
//validate

JSP
<html:text property="pessoa.nome" size="60" name=" pessoaFisicaForm" maxlength="50" styleId="txtNome"/>
Poderíamos ter casos de beans dentro de beans e no JSP é só chamar com “.” Que representam os getters.
Bom é algo que ando vendo em muitos sistemas legados, Beans tendo seus atributos copiados no form como String para tratar tudo mais fácil, depois milhões de Casts nas Actions...


Bom é isso, aí está minha dica para quem vai pegar buchas de sistemas legados.

[]sss




Nenhum comentário: