Validator com HashMap<String, Message> ou <String, String>

119 views
Skip to first unread message

Lauro Caetano

unread,
Jan 13, 2012, 12:45:31 PM1/13/12
to caelum-vraptor-dev
Boa tarde senhores,

estava olhando a issue #415¹ e achei a sugestão de acessar uma
mensagem de erro diretamente por uma key bem legal. Comecei a
investigar como implementar e gostaria de saber a opinião de
programadores mais experientes.

A forma que pensei para suportar o uso de Map seria adicionar o método
void add(String key, Message message); na interface Validator.

Ainda assim faltariam os métodos para tratar as formas de validação
por BeanValidator e pelos matchers do Hamcrest.

outras sugestões?


¹ https://github.com/caelum/vraptor/issues/415

Lucas Cavalcanti

unread,
Feb 1, 2012, 2:34:26 PM2/1/12
to caelum-vr...@googlegroups.com
Um jeito talvez melhor seja criar uma taglib que mostra os erros, filtrando por uma chave qualquer.

<v:showErrors/> => mostra todos os erros
<v:showErrors path="produto.descricao"/> ==> só os erros desse campo

2012/1/13 Lauro Caetano <lauroc...@gmail.com>

--
You received this message because you are subscribed to the Google Groups "caelum-vraptor-dev" group.
To post to this group, send email to caelum-vr...@googlegroups.com.
To unsubscribe from this group, send email to caelum-vraptor-...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/caelum-vraptor-dev?hl=en.


Lauro Caetano

unread,
Feb 1, 2012, 3:34:22 PM2/1/12
to caelum-vr...@googlegroups.com
Legal Lucas, perfeito! Não tinha pensado nessa solução. Vou tentar implementa-la.

Obrigado

Dennys Fredericci

unread,
Feb 2, 2012, 6:28:17 AM2/2/12
to caelum-vraptor-dev
Bacana!

Cheguei a alterar o Validator default do vraptor para fazer isso:

https://gist.github.com/1597599

A implementação da custom tag é bem tranquilo. O único ponto que eu
acho que não vai funcionar seria algo do tipo:

<c:if test="${ not empty errorsMap['categoria']}"> </c:if>

Pq o errorsMap é um com.google.common.collect.Multimap...

Daria para implementar algo como:

<c:if test="${ vf:containsKey( 'categoria' , errorsMap ) }"> </c:if>

Mas não sei se seria o melhor caminho....

Abraços!


On Feb 1, 6:34 pm, Lauro Caetano <laurocaeta...@gmail.com> wrote:
> Legal Lucas, perfeito! Não tinha pensado nessa solução. Vou tentar
> implementa-la.
>
> Obrigado
>
> Em 1 de fevereiro de 2012 16:34, Lucas Cavalcanti
> <lucasmrtu...@gmail.com>escreveu:
>
>
>
>
>
>
>
> > Um jeito talvez melhor seja criar uma taglib que mostra os erros,
> > filtrando por uma chave qualquer.
>
> > <v:showErrors/> => mostra todos os erros
> > <v:showErrors path="produto.descricao"/> ==> só os erros desse campo
>
> > 2012/1/13 Lauro Caetano <laurocaeta...@gmail.com>

Dennys Fredericci

unread,
Feb 2, 2012, 8:11:37 PM2/2/12
to caelum-vr...@googlegroups.com
PessoaALL,

Tive uma necessidade similar e acabei implementando um plugin.


<vraptor:showErrors/> => Não implementei
<vraptor:showErrors category="produto.descricao"/> ==> implementei

Existe ainda uma custom tag para verificar se existe um erro:

<vraptor:hasErrors category="some.category">
      <!-- your code here -->
</vraptor:hasErrors>

Para utilizar é só colocar o jar no classpath e adicionar a declaração:

<%@ taglib uri="http://vraptor.caelum.com.br/taglibs" prefix="vraptor" %>


Lucas, 

Aquela alteração no DefaultValidator foi para dentro deste plugin, assim não precisa alterar o core.



Abraços!


Lucas Cavalcanti

unread,
Feb 6, 2012, 2:48:41 PM2/6/12
to caelum-vr...@googlegroups.com
Muito bom!

2012/2/2 Dennys Fredericci <dennysfr...@gmail.com>

Lauro Caetano

unread,
Feb 6, 2012, 7:54:25 PM2/6/12
to caelum-vr...@googlegroups.com
Boa!

Otávio Garcia

unread,
Apr 10, 2012, 11:27:13 PM4/10/12
to caelum-vr...@googlegroups.com
Eu gostei do plugin, porém acho o nome confuso. Quando ví pela primeira vez o plugin achei que era um conjunto de taglibs. Depois de olhar os fontes fui ver que era um plugin para taglib de mensagens de erros.

De resto, a idéia é muito boa.

Abraço

Thiago Souza

unread,
Jan 7, 2013, 9:29:02 AM1/7/13
to caelum-vr...@googlegroups.com, lauroc...@gmail.com
Estava tentando implementar essa solução quando achei esse link no google. Sorte! 

Só não gosto do google groups porque a conversa fica meio zoneada já que ele não formata o nosso source.

Já colocaram essa dica no guj?

Abraços!

Lucas Cavalcanti

unread,
Jan 7, 2013, 10:55:57 AM1/7/13
to caelum-vr...@googlegroups.com, lauroc...@gmail.com
lembro de ter visto esse plugin no guj também.

2013/1/7 Thiago Souza <thiag...@gmail.com>

--
You received this message because you are subscribed to the Google Groups "caelum-vraptor-dev" group.
Reply all
Reply to author
Forward
0 new messages