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----- 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]com.br> 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] > > |
- Re: RES: ENC: [cejug-discussao] experi?ncias mais inte... rubens
- Re: RES: ENC: [cejug-discussao] experi?ncias mais... Felipe Vieira Silva