Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Exceção no parser de string para calendar - Spring Boot

Estou utilizando o Spring Boot, entretanto quando tento mandar os dados da view para o controller e fazer o binding no model, o campo string não é convertido em calendar. Sei que existe uma configuração no Spring MVC para resolver esse problema que é a inserção do seguinte método:

@Bean
    public FormattingConversionService mvcConversionService() {
        DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService();
        DateFormatterRegistrar registrar = new DateFormatterRegistrar();
        registrar.setFormatter(new DateFormatter("dd/MM/yyyy"));
        // REGISTRA NO CONVERSION SERVICE
        registrar.registerFormatters(conversionService);

        return conversionService;

    }

Eu inseri esse método na classe Boot, entretanto não funciona da mesma forma. Minha dúvida é se existe alguma configuração que da para fazer no Spring Boot?

4 respostas
solução!

Fala ai Gustavo, de boa ?

Cara acho que esse post pode te ajudar https://cursos.alura.com.br/forum/topico-configurando-pelo-appwebconfiguration-com-spring-boot-28104

Olá Matheus, agradeço pelo seu comentário, entretanto mesmo implementando esse método:

package br.com.desafio;

import java.util.Locale;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.i18n.FixedLocaleResolver;

@SpringBootApplication
public class Boot {

    public static void main(String[] args) {
        SpringApplication.run(Boot.class, args);
    }

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

E adicionando a seguinte notação:

@DateTimeFormat(pattern = "dd/MM/yyyy")
    @Temporal(TemporalType.DATE)
    private Calendar dataInicio;

    @DateTimeFormat(pattern = "dd/MM/yyyy")
    @Temporal(TemporalType.DATE)
    private Calendar dataEntrega;

O erro gerado ainda é esse:

Failed to convert property value of type java.lang.String to required type java.util.Calendar for property dataInicio; nested exception is org.springframework.core.convert.ConversionFailedException: Failed to convert from type [java.lang.String] to type [@org.springframework.format.annotation.DateTimeFormat @javax.persistence.Temporal java.util.Calendar] for value 2018-02-05; nested exception is java.lang.IllegalArgumentException: Parse attempt failed for value [2018-02-05]

Existe mais alguma configuração no Spring Boot para funcionar o método do Spring MVC?

Gustavo,

Você viu que tá chegando diferente ?

Parse attempt failed for value [2018-02-05]

Tem razão, acabei não observando esse detalhe. Muito obrigado Matheus, me salvou. Hahaha.