BindingResult.hasErrors retornando false

02/10/2019

0

Através do java eclipse, eu quero criar um cadastro de pessoas, sendo que elas devem ter o nome valido e serem de maior de idade, para isso uso o validation.

A classe da Pessoa:

package br.com.Test.domain;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

public class Person {


@NotNull(message = "Nao pode ser nulo")
@Size(min= 2, max = 20, message="O Tamanho deve ser entre 2 a 20 caracteres")
@Pattern(regexp="^[A-Za-z]+$", message="Aceita só letras")
private String name;

@Min(value=18, message = "Tem que ser maior de idade")
@Max(value = 150, message = "Digite uma idade valida")
private int age;


public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}



}


Quando faço o cadastro, o sistema vai para o controle, e verifica se a pessoa está valida ou não, se sim ela vai para pagina que notifica de que os dados foram salvos, se não, ele retorna para a página do formulário:

package br.com.Test.controller;

import javax.validation.Valid;

import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

import br.com.Test.domain.Person;

@Controller
public class MainControl {

@RequestMapping("/formulario")
public ModelAndView formulario()
{
return new ModelAndView("pessoa/formulario");
}

@RequestMapping("/adcionar")
public ModelAndView adcionar(@Valid @ModelAttribute("person") Person p, BindingResult br) {
if(br.hasErrors()) {
System.out.print("Error");
return new ModelAndView("pessoa/formulario");
}
System.out.println(p.getName());
System.out.println(p.getAge());
ModelAndView mav = new ModelAndView("pessoa/adcionada");
mav.addObject("pessoa",p);
return mav;
}

}


O problema ocorre que o BindingResult está aceitando uma "Pessoa invalida"(Menor de idade ou nome invalido), e o comando hasErrors me retorna como falso e vai para a pagina de "adcionados". O único momento que ele retorna true, é quando o atributo Age (idade) equivale a " ".

Gostaria de saber o que eu tenho que fazer para que o BindingResult (reconheça os atributos inválidos e me retorna como true).

O pom.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>Test</groupId>
<artifactId>Test</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
</plugins>
</build>

<properties>
<spring.version>4.2.1.RELEASE</spring.version>
</properties>

<dependencies>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.1.0.Alpha6</version>
</dependency>
<dependency>
<groupId>javax.el</groupId>
<artifactId>javax.el-api</artifactId>
<version>3.0.0</version>
</dependency>
<dependency>
<groupId>org.glassfish.web</groupId>
<artifactId>javax.el</artifactId>
<version>2.2.4</version>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.5.2</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
Lucas Afonso

Lucas Afonso

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar