# Validando Data com Spring MVC

**URL:** <https://forum.casadocodigo.com.br/t/validando-data-com-spring-mvc/395>\
**Category:** Livros\
**Tags:** spring-mvc\
**Created:** [Dezembro 27, 2016, 2:29pm UTC](https://forum.casadocodigo.com.br/t/validando-data-com-spring-mvc/395 "2016-12-27T14:29:43Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![ROBSONTARDELLY](https://avatars.discourse-cdn.com/v4/letter/r/41988e/32.png) [@ROBSONTARDELLY](https://forum.casadocodigo.com.br/u/ROBSONTARDELLY)\
**Post date:** [Dezembro 27, 2016, 2:29pm UTC](https://forum.casadocodigo.com.br/t/validando-data-com-spring-mvc/395/1 "2016-12-27T14:29:43Z")

</div>

Minha validação está funcionando quando informo a data no formato: dd/MM/yyyy. Porém, quero validar quando o pattern for diferente de dd/MM/yyyy.  
Quando passo uma data sem ser no formato dd/MM/yyyy aparece a seguinte mensagem:  
Failed to convert property value of type java.lang.String to required type java.util.Date for property data; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type java.lang.String to type @org.springframework.format.annotation.DateTimeFormat java.util.Date for value 11/11; nested exception is java.lang.IllegalArgumentException: Unable to parse 11/11.

---

<div class="post-metadata">

**Author:** ![gracyane\_oliveira](https://avatars.discourse-cdn.com/v4/letter/g/f9ae1b/32.png) [@gracyane\_oliveira](https://forum.casadocodigo.com.br/u/gracyane_oliveira)\
**Post date:** [Dezembro 27, 2016, 3:03pm UTC](https://forum.casadocodigo.com.br/t/validando-data-com-spring-mvc/395/2 "2016-12-27T15:03:17Z")

</div>

Acho que com bean validation, pode-se utilizar a anotation: @DateTimeFormat (pattern = “MM/dd/yyyy”) no atributo referente a data lá no model.

---

<div class="post-metadata">

**Author:** ![ROBSONTARDELLY](https://avatars.discourse-cdn.com/v4/letter/r/41988e/32.png) [@ROBSONTARDELLY](https://forum.casadocodigo.com.br/u/ROBSONTARDELLY)\
**Post date:** [Dezembro 27, 2016, 4:35pm UTC](https://forum.casadocodigo.com.br/t/validando-data-com-spring-mvc/395/3 "2016-12-27T16:35:16Z")

</div>

Já estou utilizando esse Pattern e funciona quando passo uma data válida. O erro acontece quando passo uma data inválida.

---

<div class="post-metadata">

**Author:** ![gracyane\_oliveira](https://avatars.discourse-cdn.com/v4/letter/g/f9ae1b/32.png) [@gracyane\_oliveira](https://forum.casadocodigo.com.br/u/gracyane_oliveira)\
**Post date:** [Dezembro 27, 2016, 5:05pm UTC](https://forum.casadocodigo.com.br/t/validando-data-com-spring-mvc/395/4 "2016-12-27T17:05:20Z")

</div>

Será que o idioma do browser pode estar influenciando?  
Tentar colocar o idioma do browser para inglês e faz um teste.  
Se for esse o problema então tem que colocar na classe de configuração do spring(a classe que configura o template) o localeResolver:

> ```
> @Bean
> public LocaleResolver localeResolver() {
> return new FixedLocaleResolver(new Locale("pt", "BR"));
> }
> 
> ```

---

<div class="post-metadata">

**Author:** ![ROBSONTARDELLY](https://avatars.discourse-cdn.com/v4/letter/r/41988e/32.png) [@ROBSONTARDELLY](https://forum.casadocodigo.com.br/u/ROBSONTARDELLY)\
**Post date:** [Dezembro 27, 2016, 8:07pm UTC](https://forum.casadocodigo.com.br/t/validando-data-com-spring-mvc/395/5 "2016-12-27T20:07:42Z")

</div>

Eu estou forçando esse erro.  
Estou passando uma data inválida. Ex.: 27/12.  
O Binding já faz essa validação e devolve a mensagem de erro. Quero padronizar essa mensagem.

Quando eu passo a data no formato correto tá OK.  
Ex.: 27/12/2016.

---

<div class="post-metadata">

**Author:** ![gracyane\_oliveira](https://avatars.discourse-cdn.com/v4/letter/g/f9ae1b/32.png) [@gracyane\_oliveira](https://forum.casadocodigo.com.br/u/gracyane_oliveira)\
**Post date:** [Dezembro 27, 2016, 9:53pm UTC](https://forum.casadocodigo.com.br/t/validando-data-com-spring-mvc/395/6 "2016-12-27T21:53:00Z")

</div>

Entendi, você quer customizar a mensagem para ficar num formato amigável.  
Dê uma olhada neste blog:

> **[Validating dates in spring form objects](http://jtuts.com/2014/11/09/validating-dates-in-spring-form-objects/)**
>
> This article describes how to validate a date and provide a custom error message in spring form objects.

  
O autor customiza a mensagem usando message.properties file

Outra opção seria você utilizar um campo com jQuery para obrigar o usuário a digitar a data correta antes mesmo de submeter o formulário. Assim não precisaria formatar a mensagena de error.
