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.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
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.
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 (;