[quote=garcia-jj]
Como o vraptor irá apenas delegar a validação para o BeanValidator, isso dependerá tudo dele. Só que se não me engano quando você inicializa o bean-validator precisa indicar o locale a ser usado. Não sei como o vraptor sabe qual o locale usar internamente, mas podemos fazer uso o atributo javax.servlet.jsp.jstl.fmt.locale para passar o locale para o bean-validator, Lucas?[/quote]
o vraptor já tem um componente que lê (ou deveria ler :P) esse parâmetro… ele se chama Localization, e vc pode usar no seu BeanValidator
PessoALL,
Tem algum jeito no VRaptor3 de Injetar Dependencias (ou Recursos) do FrameWork e/ou de Objetos de minha Aplicação via [color=red]@In[/color] (como no VRaptor2), +/- assim:
[code] @Resource
public class ProdutosController { @In
private final Result result; @In
private Validator validator; @In
private ProdutoSrvcFcd produtoSrvcFcd;
public void incluir(Produto produto) {
produtoSrvcFcd.incluir(produto);
}
...
daria pra fazer uma condicional: se tiver o jar do Hibernate, registra o do Hibernate, se tiver o do JSR303, registra o do 303, se tiver os dois, registra um wrapper pros dois =)
daria pra fazer uma condicional: se tiver o jar do Hibernate, registra o do Hibernate, se tiver o do JSR303, registra o do 303, se tiver os dois, registra um wrapper pros dois =)[/quote]
Certo. Agora mais do que nunca vou precisar rever aquele artigo que tu me passou de atualizar meu fork com as últimas alterações do git do vraptor/master
Quando usamos o Bean Validator, o resultado dos erros vem em um iterator de ConstraintViolations, objeto esse que contém uma série de informações sobre a validação, e não apenas a mensagem de validação.
Para o resultado creio que deveremos usar o ValidationMessages do Vraptor, correto? Sendo assim o resultado das mensagens de erros devem ser interpoladas via MessageInterpolator.interpolate ou extender o ValidationMessages do Vraptor e devolver um objeto com as informações de validação?
(edit)
Notei que o bean validator, quando dá um erro de validação, mostra apenas as mensagens cruas do tipo “não é um e-mail válido”. Estou em dúvida de como reportar isso para a tela, se como String ou então (penso ser o melhor) devolver um objeto para que o peão possa tratar na tela. Creio que algo extendendo ValidationMessage do vraptor com os dados das constraint violations.
[quote=Lucas Cavalcanti]usa o @Autowired do Spring[/quote]Lucas, Muito Obrigado!! :thumbup: Funfou mesmo!!
[quote=Lucas Cavalcanti]… mas é feio
[/quote]Concordo contigo, mas só com relação a Injeção de Dependências (Objetos de Layers da minha Aplicação), pois a configuração fica dúbia (seu eu remover @Component, pára de funcionar): duplicidade de Annotations.:thumbdown: Mas, acerca de Injeção de Recurso, seja de APIs do Java (Servlet/HTTP) ou de FrameWork, fica muito + prático c/ a @Autowired (facilita o Refactoring), pois se o desenvolvedor entender q ele não precisa + do Objeto de 1 API, nada q 1 delete (ou Comment-Out dos) Objetos e Optimize Imports não resolva (c/ alguns clicks). 8)
Agora tenho 1 Duvidinha - vou ilustrar o ex.: tendo 1 form.JSP (ou produtos/manter) com Dados do Produto carregados no Fomulário. Tendo 1 Botão ‘Alterar’, como faço para q ele chame o método alterar(); e 1 Botão ‘Excluir’, como fazer ele chamar o método excluir()??! Detalhe: [color=red]não[/color] vale usar [color=darkblue]JavaScript[/color]!
P.S.[quote=garcia-jj]Ps: bagunçamos o tópico das dúvidas pontuais. [/quote]Absolutamente, Garcia! :-o Qq contribuição é sempre bem-vinda!! :thumbup:
Quando usamos o Bean Validator, o resultado dos erros vem em um iterator de ConstraintViolations, objeto esse que contém uma série de informações sobre a validação, e não apenas a mensagem de validação.
Para o resultado creio que deveremos usar o ValidationMessages do Vraptor, correto? Sendo assim o resultado das mensagens de erros devem ser interpoladas via MessageInterpolator.interpolate ou extender o ValidationMessages do Vraptor e devolver um objeto com as informações de validação?
(edit)
Notei que o bean validator, quando dá um erro de validação, mostra apenas as mensagens cruas do tipo “não é um e-mail válido”. Estou em dúvida de como reportar isso para a tela, se como String ou então (penso ser o melhor) devolver um objeto para que o peão possa tratar na tela. Creio que algo extendendo ValidationMessage do vraptor com os dados das constraint violations.[/quote]
o Hibernate Validator 3 (que o vraptor já suporta) dá um monte de constraintViolations, que têm o campo q deu o erro e a mensagem… daí é só converter pra uma List do VRaptor…
não sei como funciona o Bean Validator/Hibernate Validator 4, mas acho que ele tb tem algo do tipo
[quote=derlon]Concordo contigo, mas só com relação a Injeção de Dependências (Objetos de Layers da minha Aplicação), pois a configuração fica dúbia (seu eu remover @Component, pára de funcionar): duplicidade de Annotations.:thumbdown: Mas, acerca de Injeção de Recurso, seja de APIs do Java (Servlet/HTTP) ou de FrameWork, fica muito + prático c/ a @Autowired (facilita o Refactoring), pois se o desenvolvedor entender q ele não precisa + do Objeto de 1 API, nada q 1 delete (ou Comment-Out dos) Objetos e Optimize Imports não resolva (c/ alguns clicks). 8)
[/quote]
Vc tb consegue fazer isso com injeção no construtor
[quote=derlon]
Agora tenho 1 Duvidinha - vou ilustrar o ex.: tendo 1 form.JSP (ou produtos/manter) com Dados do Produto carregados no Fomulário. Tendo 1 Botão ‘Alterar’, como faço para q ele chame o método alterar(); e 1 Botão ‘Excluir’, como fazer ele chamar o método excluir()??! Detalhe: [color=red]não[/color] vale usar [color=darkblue]JavaScript[/color]![/quote]
vc pode usar com name=_method e value=(PUT|DELETE|POST)… mas não funciona no IE =(
(já dei 1 googlada, mas não achei nada)
Codifiquei assim: @Post
public void manter() {
}
@Get
public Produto manter(final Produto produto) {
return produto;
}
mas, recebi:
Your logic method must accept HTTP GET method if you want to redirect
[quote=derlon](já dei 1 googlada, mas não achei nada)
Codifiquei assim: @Post
public void manter() {
}
@Get
public Produto manter(final Produto produto) {
return produto;
}
mas, recebi:
Your logic method must accept HTTP GET method if you want to redirect