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.
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 (;