Seguinte pessoal, estou com uma dúvida:
Queria saber se seriam necessários 2 beans para se trabalhar com o Struts.
Vou tentar dar um exemplo:
Eu tenho um bean(ActionForm) PessoaForm com os seguintes atributos:
String nome;
String salario;
E eu precisaria de um bean que seria o espelho do banco de dados tipo
PessoaBean que teria os seguintes atributos:
String nome;
Double salario;
Na minha camada DAO eu utilizaria o PessoaBean e na minha camada View eu utilizaria o PessoaForm.
Alguém tem algum jeito mais fácil de fazer isso?
Tem algum padrão para resolver este problema?
Se isso estiver certo, em que camada eu devo fazer a “cópia” de um bean para outro?
Obrigado.
uma opção seria vc colocar o seu objeto PessoaBean dentro do form, algo do tipo:
public class PessoaForm extends ActionForm{
private PessoaBean pessoaBean;
//gets e sets
}
depois dentro dos jsp’s, vc tem uma tag html:text, vc usaria:
desta forma o seu obj PessoaBean já viria com os dados preenchidos na action. Não sei se é a melhor forma, mas é uma opção.
[]s
O que você realmente deveria fazer era criar objetos de domínio.
Onde estão as regras de negócio do seu sistema?
Shoes
Na verdade eu tenho uma camada de negócios(bo)…
Seria o fluxo Action -> BO -> DAO
Então rpa que você rpecisaria de um bean? Por que não usar seu objetod e negócio diretamente?
Tudo bem… mas onde entra o ActionForm?
Você está sugerindo para que as regras de negócio fiquem no ActionForm?
Se sua pergunta é se você vait er que ter o FormBean + o objeto de negócio, a resposta é sim.
Shoes
Agora começou a ficar mais claro… na minha classe de negócio eu teria os atributos “quentes” que falei(espelho do banco) e os seus métodos com as regras de negócio… é isso?
Poderia inclusive colocar no construtor da classe BO um actionForm e daí fazer a cópia dos atributos do FormBean?
Quase.
Espelho do banco:
Seu banco de dados deve espelhar seus objetos , não o contrário
Construtor de Cópia:
Absolutamente não. A camada de negócios não deve ter dependência com a camada de apresentação. Você pode, no entanto, ter uma classe utilitária que faça o serviço 
Shoes
OK, o banco deve ser o espelho do bean…
Agora mais uma pergunta, na classe BeanUtils existe um método copyProperties que realiza a cópia de um bean para outro, mas só faz isso se os atributos tiverem o mesmo nome e se forem do mesmo “tipo”, caso contrário tenho que fazer manualmente, como seria o caso do salario String para salario Doble.
Tu conhece outra forma de fazer isso?
Não, mas não é difícil de implementar com reflection ou as classes de JavaBeans, se bobear já tem algo pronto mesmo.
É a minha dúvida maior era se eu deveria utilizar dessa forma, digo, se é assim que o pessoal utiliza o struts…
Mas valeu pela ajuda.