Hibernate Validator Sempre Validando, inclusive em Pesquisas
5 respostas
rodrigoacb
Olá!
Ao usar anotação do Hibernate Validator em propriedades de uma Entity, quando essas propriedades são colocadas numa página de pesquisa e o botão com ação “pesquisar” é acionado, tais propriedades são validadas.
O único jeito de contornar e/ou resolver esse problema é usando um DTO/VO contendo apenas os filtros de pesquisa?
Ao usar anotação do Hibernate Validator em propriedades de uma Entity, quando essas propriedades são colocadas numa página de pesquisa e o botão com ação “pesquisar” é acionado, tais propriedades são validadas.
O único jeito de contornar e/ou resolver esse problema é usando um DTO/VO contendo apenas os filtros de pesquisa?
Obs: estou usando primefaces na apresentação.
Não sei se fui claro.
Obrigado!
Use a propriedade immediate=“true” no command[Button|Link]. Isso fará com a fase de validação do JSF seja ignorada.
Funcionou normalmente.
Só não sei como mudar a mensagem da validação facelet. Vou pesquisar. Alguém sabe?
E qual seria vantagem de usar o hibernate validator, visto que ele faz a validação para quaisquer requisições/submissões de formulário e não apenas para operações de inclusão/alteração?
E qual seria vantagem de usar o hibernate validator, visto que ele faz a validação para quaisquer requisições/submissões de formulário e não apenas para operações de inclusão/alteração?
A questão não é “Qual a vantagem” mas “Como o JSF/BeanValidation sabe que você fez um requisição para inclusão/alteração dos dados”? Não há como saber. Por isso ele valida sempre e você deve informar manualmente que não quer validar os dados naquela requisição, colocando o atributo “immediate=true” no command[Button|Link]. Sacou?
rodrigoacb
Hmm… foi o que imaginei…
Bom, não sou fã do immediate=true. Gosto de usar só em caso muito específico.
Neste caso, tratando-se de campos que servem de filtro numa funcionalidade, acho preferível usar a validação do facelet (citado acima por exemplo) e descartar o uso do hibernate validator.