Por favor, alguém me ajude, não sei mais o que fazer, rsrs… Estou aprendendo Java através da apostila da Caelum. Atualmente estou na parte de Spring MVC.
Estou seguindo exatamente o que a apostila diz para validar um campo nulo ou menor que 5 caracteres, porém não funciona de jeito nenhum, o formulário ignora a validação e salva o registro nulo no banco de dados. A única diferença é que não usei as libs do curso, baixei através do Maven.
Segue trechos principais das classes DTO e Controller:
TAREFA DTO
package br.com.tarefas.dto;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;
public class Tarefa {
private Long id;
@NotNull @Size(min=5)
private String descricao;
(...)
TAREFA CONTROLLER
package br.com.tarefas.controller;
import javax.validation.Valid;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.RequestMapping;
import br.com.tarefas.dao.TarefaDao;
import br.com.tarefas.dto.Tarefa;
@Controller
public class TarefasController {
@RequestMapping("novaTarefa")
public String form() {
return "tarefa/formulario";
}
@RequestMapping("adicionaTarefa")
public String adiciona(@Valid Tarefa tarefa, BindingResult result) {
if (result.hasFieldErrors("descricao")) {
return "tarefa/formulario";
}
TarefaDao dao = new TarefaDao();
dao.adiciona(tarefa);
return "tarefa/adicionada";
}
}
De uma verificada na diferença de @NotNull | @NotBlank | @NotEmpty.
Eu por exemplo em um projeto meu, percebi que apenas consegui fazer a validação com @NotBlank e @NotEmpty quando falando de String como propriedade.
Talvez porque a String esteja sendo tratada como uma String vazia e não uma String nula. Tem casos assim sendo explicado na internet por exemplo como a forma que JSF trata o caso.
Na classe modelo, além de usar o validador do Javax (javax.validation.constraints.) usei também o do Hibernate (org.hibernate.validator.constraints.). Aí sim deu certo a anotação @NotEmpty e o @Size.
Faltava também configurar o arquivo de contexto do Spring MVC (no meu caso, dispatcher-servlet.xml), de acordo com a explicação do link acima (a parte do “mvc:annotation-driven”).
Ainda assim, não estava dando certo, o Tomcat passou a subir com erro. Então, no POM.xml troquei a versão da dependência do “hibernate-validator” de “3.1.0.Final” para “5.0.1.Final”, conforme o usado no link acima.
Ufa, estava quase desistindo, esse último conflito de versão foi pura sorte.