| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 10:21:08
|
seufagner
JavaEvangelist
![[Avatar]](/images/avatar/5fd0245f6c9ddbdf3eff0f505975b6a7.jpg)
Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline
|
Ola
Não percebo um clara justificativa para que não possamos recuperar os erros (Message) ocorridos quando usamos alguma implementação da JSR de Bean Validator através do VRaptor, leia-se:
Eu tenho realmente que criar um Interceptor para pegar o parâmetro "errors" (próprio do VRaptor) existente pós validação?
Porque não disponibilizá-las publicamente ?
|
@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 10:38:29
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Não entendi teu post. O VRaptor exporta os erros do BeanValidator com as constraints violations.
https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/validator/DefaultValidator.java
https://github.com/caelum/vraptor/blob/master/vraptor-core/src/main/java/br/com/caelum/vraptor/validator/JSR303Validator.java
BeanValidator.validate retorna uma lista de Message, e o DefaultValidator.validate exporta para o atributo errors. Como as mensagens são exportadas para o atributo errors, você pode fazer um foreach no JSP e ler essas mensagens normalmente.
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 10:59:25
|
seufagner
JavaEvangelist
![[Avatar]](/images/avatar/5fd0245f6c9ddbdf3eff0f505975b6a7.jpg)
Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline
|
Simples garcia, a interface não tem este método.
AbstractValidator marca ele como protegido e é usado por DefaultValidator, este sim contém o método público.
Minha questão é:
Porque este método não é declarado na interface? Eu teria que declarar, no controller, a implementação diretamente (ou fazer CAST), para ter acesso a este método.
This message was edited 2 times. Last update was at 20/04/2011 11:01:14
|
@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 11:02:20
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Você tem acesso a ele pelo JSP via atributo errors. Você precisa dele no controller?
This message was edited 1 time. Last update was at 20/04/2011 11:04:19
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 11:05:54
|
seufagner
JavaEvangelist
![[Avatar]](/images/avatar/5fd0245f6c9ddbdf3eff0f505975b6a7.jpg)
Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline
|
Seria o óbvio ululante, garcia.
Mas br.com.caelum.vraptor.Validator não tem o método getErrors()
Estou usando a versão 3.3.1
Obg
This message was edited 1 time. Last update was at 20/04/2011 11:06:10
|
@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 11:07:58
|
seufagner
JavaEvangelist
![[Avatar]](/images/avatar/5fd0245f6c9ddbdf3eff0f505975b6a7.jpg)
Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline
|
garcia-jj wrote:Você tem acesso a ele pelo JSP via atributo errors. Você precisa dele no controller?
Isso, eu preciso no Controller. Meu cliente é um Aplicativo que consome JSON. (de antemão aviso que o Deserializer default do VRaptor não funciona pra mim, eu estou usando o GSon)
O ponto desta thread não é a solução em si, mas o por quê não disponibilizá-lo na interface Validator.
Um cara que valida algo, por definição, deve saber informar os erros encontrados.
This message was edited 2 times. Last update was at 20/04/2011 11:10:11
|
@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 11:15:31
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
seufagner wrote:O ponto desta thread não é a solução em si, mas o por quê não disponibilizá-lo na interface Validator.
Vamos com calma. Antes de mais nada preciso entender as necessidades para saber como te ajudar.
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 12:10:46
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
antes de mais nada, se vc usar o:
e a requisição veio com Accept: application/json ou algo do tipo, ele vai serializar os erros pra json automaticamente.
A gente não disponibiliza os erros na interface Validator, pq geralmente não faz mto sentido vc acessar os erros no controller, é algo que vc só precisa na view.
de qqer forma, vc pode estender o VRaptor:
e receber o MeuValidator no construtor...
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 13:38:58
|
seufagner
JavaEvangelist
![[Avatar]](/images/avatar/5fd0245f6c9ddbdf3eff0f505975b6a7.jpg)
Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline
|
@garcia-jj, Lucas
O aplicativo cliente recebe tudo em JSON, inclusive mensagens de erro, ao invés de HTTP CODE e/ou, porventura, uma mensagem no corpo.
O atalho do VRaptor produz um HTTP CODE 400, certo? Não serve para mim. Nem sempre podemos fazer algo mais próximo de Restful.
Trata-se de um aplicativo feito em Flash que consome JSON e envia JSON. Ele será o único cliente, então não posso me prender a diversas good practices de serviços web, REST ou não, pois a plataforma da Adobe é bem limitada e cheia de problemas.
Neste caso específico, ao receber um code 400 ele simplesmente retorna um IOError e não tem como capturar a resposta, quiçá, enviada pelo serviço.
Como é muito simples a solução do Lucas, vou utilizá-la, pois assim meu cliente vai ganhar dinheiro e, da maneira mais responsável possível, irei resolver o problema dele.
Obrigado pessoal!
This message was edited 2 times. Last update was at 20/04/2011 13:42:41
|
@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 14:30:12
|
seufagner
JavaEvangelist
![[Avatar]](/images/avatar/5fd0245f6c9ddbdf3eff0f505975b6a7.jpg)
Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline
|
Vocês não acham que os erros deveriam ser conhecidos no Controller?
Acho natural usar o padrão (colocar o erros no request), porém, por default, não vejo problemas em disponibilizá-los no Controller também.
E se o cara quiser enviar as mensagens em outra formatação, não é normal? Neste caso o VRaptor não estaria tolhendo demais o programador para utilizar o padrão dele ? Enviá-la de outra forma demanda, desnecessariamente, o trabalho de sobrescrever o framework.
O que vocês acham?
This message was edited 2 times. Last update was at 20/04/2011 14:56:28
|
@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 15:48:48
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
abre lá uma issue pedindo isso, por favor:
http://github.com/caelum/vraptor/issues/
se puder fazer um fork e mandar um pull request com a implementação seria bem legal tb
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 15:52:47
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Será que é legal retornar uma lista imutável de errors?
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 15:56:02
|
Lucas Cavalcanti
GUJ Hacker
![[Avatar]](/images/avatar/5f6780632f5d27dd0cded5fc9361169e.jpg)
Membro desde: 08/07/2007 00:08:14
Mensagens: 6396
Offline
|
por exemplo
|
--
Caelum
www.caelum.com.br
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 16:04:38
|
garcia-jj
JWizard
Membro desde: 13/04/2009 22:11:50
Mensagens: 2715
Localização: Porto Alegre
Offline
|
Lucas Cavalcanti wrote:por exemplo
Ao invés de retornar diretamente os errors.
|
http://github.com/garcia-jj
Não respondo dúvidas via MP. Use o fórum. |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 20/04/2011 17:05:04
|
seufagner
JavaEvangelist
![[Avatar]](/images/avatar/5fd0245f6c9ddbdf3eff0f505975b6a7.jpg)
Membro desde: 06/05/2005 16:33:09
Mensagens: 447
Localização: Rio de Janeiro - RJ
Offline
|
Bacana garcia, mas só lembrando que você com unmodifiableXX pode mudar os objetos NA instância da lista de qualquer forma. O que você não pode é, simplesmente, alterar a instância DA PRÓPRIA lista.
Ou seja, não vejo qualquer benefício prático neste caso.
Lucas,
Chegando em casa vou implementar e dar um pull.
This message was edited 1 time. Last update was at 20/04/2011 17:06:20
|
@seufagner
seufagner.com.br
"Simplicidade é a maior forma de sofisticação"
Leonardo Da vinci
|
|
|
 |
|
|