Аннотация @RequestParam в Spring MVC со значением YearMonth - PullRequest
0 голосов
/ 03 мая 2018

Я пытаюсь получить параметр запроса следующего формата «2018-01» для использования в качестве объекта YearMonth (java.time).

В моем контроллере у меня есть следующий параметр:

@RequestParam(value = "start") @DateTimeFormat(pattern = "yyyy-MM") YearMonth start

но я получаю следующую ошибку: Не удалось преобразовать значение типа [java.lang.String] в требуемый тип [java.time.YearMonth]; Вложенное исключение - java.lang.IllegalStateException: невозможно преобразовать значение типа [java.lang.String] в требуемый тип [java.time.YearMonth]: не найдено подходящих редакторов или стратегии преобразования

Edit:
По этой ссылке: https://jira.spring.io/browse/SPR-13518, преобразование java.time.YearMonth поддерживается начиная с версии 4.2.4, и я использую весеннюю версию 4.3.3.RELEASE

1 Ответ

0 голосов
/ 03 мая 2018

Не знаю, поддерживается ли YearMonth аннотацией @DateTimeFormatter для неявного преобразования. Но

Вы всегда можете зарегистрировать пользовательский конвертер для этого типа YearMonth, например:

@Configuration
@EnableMvc 
public class WebMvcConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addFormatters(FormatterRegistry registry) {
        registry.addConverter(new YearMonthConverter());
    }
}

с вашим YearMonthConverter, определенным как:

public class YearMonthConverter implements Converter<String, YearMonth> {

    @Override
    public YearMonth convert(String text) {
        return YearMonth.parse(text, DateTimeFormatter.ofPattern("yyyy-MM"));
    }
}

там вы уверены в неявном преобразовании.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...