Gaúcho,
        O Struts faz uso do commons beanutils para popular seus
ActionForms(DynaActionForms) extraindo parâmetros do request e populando
as propriedades desses beans. IMHO, o problema principal é que quando a
conversão(de uma string para o tipo especificado no bean) não dá certo,
o valor é perdido e não existe um tratamento de exceções que se possa
acoplar a esse modelo. Outro problema é que o bean nesse caso tem que
ser específico, ou seja, deve possuir métodos 'setXXXX' para cada
propriedade.
E no caso de se implementar um TO genérico, o beanutils não se aplica.

Veja uma solução para essa deficiência:
http://www.theserverside.com/articles/content/StrutsLiveCh10/Chapter10-T
SS.pdf

A outra solução seria implementar um framework ou API para:
- fazer conversões automáticas string para o tipo real.
- especificar um esquema de tratamento de exceções nessas conversões.

Pensando mais além:
- formatação de dados dos beans para a camada de apresentação.
- geração de beans genéricos populados com dados de teste via arquivo
XML(DBUnit) para o auxílio em testes unitários.
- etc.

-----Mensagem original-----
De: Ivan Romero Teixeira [mailto:[EMAIL PROTECTED] 
Enviada em: sexta-feira, 28 de janeiro de 2005 08:28
Para: discussao@cejug.org
Assunto: RES: [cejug-discussao] experiências mais interessantes com
core-servlet

Gaucho,
        descobri não faz muito tempo o commons-beanutils (bem, já
conhecia a
biblioteca mas nunca tinha me dado ao trabalho de estudar sua API) e
agora
estou fazendo uso intensivo dela. Vale só lembrar que a maior parte do
componente é baseada em reflexão da linguagem, e que se for usada para
muitos dados pode ter um impacto na performance da aplicação.
        No seu caso vc pode usar da seguinte forma:

        BeanUtils.populate(new MyBean(),request.getParameterMap());

        Bem, os nomes dos parâmetros da requisição devem bater com o do
Bean. Se houver parâmetros a mais serão ignorados. Se houverem
propriedades
no Bean que não existem no request estas permanecerão com seus valores
default.
        Acho que ele resolve qualquer problema de case, mas testa aí e
diz
no que deu.
        []'s!  Ivan R. Teixeira


-----Mensagem original-----
De: Felipe Vieira Silva [mailto:[EMAIL PROTECTED] 
Enviada em: quinta-feira, 27 de janeiro de 2005 21:19
Para: discussao@cejug.org
Assunto: [cejug-discussao] experiências mais interessantes com
core-servlet

Aos que estão acompanhando a saga dos classificados CEJUG, aí vai uma
questão um pouco mais sofisticada:

- Recebo um POST do cliente contendo um formulário. 
- Tenho que povoar um Bean com os dados do formulário

Opções:

0) deixar o struts esconder essa parte de mim (ainda não, depois :) )
1) criar um Bean específico para cada formulário (pode ser, mas quando
o número de páginas aumentar, a manutenção pode se tornar complicada)
2) usar "Bean Introspection" em um Filter que está entre a camada de
apresentação e o FrontController. Este filtro teria a capacidade de
gerar um bean a partir do formulário, independente da quantidade e
tipo dos campos do formulário. (sofisticado e trabalhoso, porém um
desafio interessante - eu acho :) )

A idéia é permitir que o filtro preencha um ben e repasse ao
FrontController, que por sua vez irá identificar o tipo de requisição
e passar para o Helper este "bean genérico". O Helper confere/valida
os dados do bean e dispara o Command, que irá finalmente executar a
regra de negócio associada ao bean e retornar a próxima página.... O
Helper pode também fazer um casting do bean genérico para o bean
específico do serviço, para otimizar as próximas etapas...

Comecei a olhar como fazer e, por sugestão do Régis, estou mexendo no
pacote "org.apache.commons.beanutils".

pergunta: Alguém já usou o beanutils para criar beans a partir de
formulários JSP ?

valeu,

   Felipe Gaúcho

------------------------------------------------------------------------
----
---------------

Ceara' Java User Group



  Para cancelar sua assinatura, envie um e-mail para:
[EMAIL PROTECTED]

  Para mais informacoes, mande um e-mail para: [EMAIL PROTECTED]

  Falar com o administrador? e-mail para: [EMAIL PROTECTED] 

 




------------------------------------------------------------------------
-------------------

Ceara' Java User Group



  Para cancelar sua assinatura, envie um e-mail para:
[EMAIL PROTECTED]

  Para mais informacoes, mande um e-mail para: [EMAIL PROTECTED]

  Falar com o administrador? e-mail para: [EMAIL PROTECTED] 

 




-------------------------------------------------------------------------------------------
Ceara' Java User Group

  Para cancelar sua assinatura, envie um e-mail para: [EMAIL PROTECTED]
  Para mais informacoes, mande um e-mail para: [EMAIL PROTECTED]
  Falar com o administrador? e-mail para: [EMAIL PROTECTED] 
 

Responder a