No caso do classificados, tô começando a achar que um filtro "povoador" antes de cada ApplicationController vai resolver melhor que a automação do beanutils.
Vai perder aquela sofisticação de "padrão" pois cada filtro vai ter seu próprio código e alguma coisa vai ser replicada, mas vai ganhar em desempenho e segurança. valeu, Felipe Gaúcho On Fri, 28 Jan 2005 09:27:32 -0300, rubens <[EMAIL PROTECTED]> wrote: > > > Usando o beanutils a conversão será feita, mas caso haja algum tipo de > conversão errada, uma exceção será lançada e o processo de conversão é > interrompido. O retorno do método 'populate' é void. > > > > Perhaps the biggest problem is that the RequestProcessor calls populate() on > the BeanUtils > > class instead of directly calling its setProperty() method. The populate() > method simply iterates > > a Map of request values and calls setProperty() for each non-null key. The > problem is that > > if a ConversionException is thrown during the call to setProperty(), the > iteration is short-circuited > > because populate() doesn't catch the exception. And even if it did catch > ConversionExceptions, > > there would be no way to provide information to the calling method about > failed > > conversions because the return type is void. > > > > Ou seja, pra não perder tempo, você pode refazer o método populate do > beanutils de forma que esta dê um feedback das conversões que deram erradas. > > Exemplo: > > ActionErrors populate(Object bean, Map map) > > > > Dessa forma, o que deu pra converter foi convertido, e o que não deu certo > vc sabe pelo retorno. > > > > -----Mensagem original----- > De: Felipe Vieira Silva [mailto:[EMAIL PROTECTED] > Enviada em: sexta-feira, 28 de janeiro de 2005 09:08 > Para: discussao@cejug.org > Assunto: Re: ENC: [cejug-discussao] experiências mais interessant es com > core-servlet > > > > Ok, > > > > bom saber que as dúvidas são compartilhadas por quem tem > > coragem/paciência de abrir o capô do struts :) > > > > Sim, um pouco mais além: > > > > No formulário de publicação de anúncios de emprego, o usuário será > > convidado a marcar os conhecimentos desejáveis dos candidatos. Essa > > lista de conhecimentos será dinâmica, ou seja, no init do > > FrontController será feito uma consulta ao banco para recuperar a > > tabela de "skills" - e o conteúdo desta tabela poderá mudar com o > > tempo. > > > > Ou seja, eu terei um conjunto dinâmico de caixas de seleção que > > deverão virar uma lista no Bean. > > > > Como fazer para converter de n-campos do formulário para uma lista no bean? > > > > Imagino que após o uso do beanutil, eu deverei fazer essa "conversão" > > na mão - é isso ? > > > > * Estou anexando o formulário atual dos classificados, apenas para > > ilustrar. E claro, a coisa toda está em fase de prototipação > > pré-modelagem - um tipo de prova de conceito. > > > > valeu, > > > > Felipe Gaúcho > > > > > > > > > > > > On Fri, 28 Jan 2005 08:55:37 -0300, rubens <[EMAIL PROTECTED]> wrote: > > > 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] > > > > > > ------------------------------------------------------------------------------------------- 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]