Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Dúvida no Ex. 3 da Aula 7 - Validação e integração com Bean Validation

Tenho uma dúvida por exemplo, vamos supor que o campo QUANTIDADE é obrigatório somente se o campo NOME não for vázio? Ou seja, um campo depender do outro. Como faria? Obrigado.

6 respostas
solução!

Olá Victor! Se for um caso isolado, você pode fazer um simples if compondo a regra:

if(isNotNullOrEmpty(nome)) {
      validator.check(quantidade > 0, message);
}

mas se for uma regra recorrente e mais complexa, você pode criar um custom validator:

http://www.vraptor.org/pt/docs/validacao/#criando-validaes-customizadas

Obrigado. :)

Rodrigo, Bom dia! Não conseguir fazer o @Valid funcionar.

Meu método ficou assim:

 @Post
    public void adiciona(@Valid Produto produto){
        validator.onErrorUsePageOf(this).formulario();
        dao.adiciona(produto);
        this.result.include("mensagem","Registro cadastrado com sucesso");
        this.result.redirectTo(this).lista();
    }

Na classe Produto fiz isso:

@Min(value=0,message="{produto.quantidade.negativa}")
    private Integer quantidade;

No arquivo messages.properties :

produto.quantidade.negativa = Não pode cadastrar um produto com quantidade negativa!

e no arquivo validation.xml

<?xml version="1.0" encoding="UTF-8"?>

<validation-config xmlns="http://jboss.org/xml/ns/javax/validation/configuration"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://jboss.org/xml/ns/javax/validation/configuration validation-configuration-1.1.xsd"
        version="1.1">
    <executable-validation enabled="false"/>
</validation-config>

Não sei o que pode está acontecendo, mas a validação não acontece. Digito todos os dados no formulário e informo o valor 0 para o campo quantidade e mesmo assim o registro é inserido. O que estou fazendo de errado? Pode me ajudar?

Oi Marco

Digito todos os dados no formulário e informo o valor 0 para o campo quantidade e mesmo assim o registro é inserido.

O que acontece se você digitar -1 no campo, no lugar de zero?

Veja que, na sua anotação de validação você diz que o @min é zero, ele considera zero inclusive. Isto é, zero ainda é um valor válido. Se quiser excluir o zero, você precisa dizer que o @min é 1. Faz sentido?

Oi Rodrigo,

Faz sentido! Não tinha pensado dessa forma. Realmente ao colocar 1 como valor mínimo, a validação funcionou!! Não testei colocando -1 como valor, mas acredito que funcione!! Depois vou testar e te informo!! Muito Obrigado!!

Legal, Marco! Meu chute é que funcione, mas teste sim e depois me conta (;

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software