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]