Преобразувайте Unix timestamp в Java Date, Spring RequestParam

Следва заявка fullcalendar js, изпратена до сървъра.

http://localhost:8080/NVB/rest/calendar/events?start=1425168000&end=1428796800 400

Как да посочите модел на дата (@DateTimeFormat) в Spring Request Param, за да конвертирате това време в обект Date. Опитах различни модели, но получих 405 Bad Request.

@RequestMapping(value = "/events", method = RequestMethod.GET)
public @ResponseBody List<EventDto> addOrder(@RequestParam(value = "start") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) Date start,
                                             @RequestParam(value = "end") @DateTimeFormat(iso = DateTimeFormat.ISO.DATE)   Date end) {
    LOGGER.info("Requesting event from [{}] to [{}]", start, end);
    return new LinkedList<EventDto>();
}

person Susitha Ravinda Senarath    schedule 22.03.2015    source източник
comment
Можете да подадете start като String и да внедрите конвертора в EventDao.setStart, погледнете stackoverflow.com/questions/45989158/ надявам се, че помага   -  person whoopdedoo    schedule 01.09.2017


Отговори (2)


Тъй като клеймата за време не са форматирана дата (преминавайки към опциите SimpleDateFormat на Java), а по-скоро числова стойност: бих препоръчал да направите персонализирано свързване на данни за обекти Date, ако правите това по-често от този единичен екземпляр. Вижте http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#portlet-ann-webdatabinder

Като еднократно решение можете да ги свържете към Long параметри и да създадете свой собствен обект Date с new Date(start).

person Kafkaesque    schedule 07.01.2016

Използване на @InitBinder и WebDataBinder:

@RestController
public class SimpleController {

    //... your handlers here...

    @InitBinder
    public void initBinder(final WebDataBinder webdataBinder) {
        webdataBinder.registerCustomEditor(Date.class, new PropertyEditorSupport() {
            @Override
            public void setAsText(String text) throws IllegalArgumentException {
                setValue(new Date(Long.valueOf(text)));
            }
        });
    }
}
person tchudyk    schedule 22.05.2017
comment
Отне ми часове да намеря този отговор, благодаря човече! Подозирах, че Джаксън е проблемът и разочарованието от безсмислен след безсмислен опит за конфигурация наистина ме изнерви. Изглежда Джаксън изобщо не обработва параметри на заявка, някой знае ли причината защо параметрите на заявка се обработват по различен начин от типовете json? - person godsim; 02.11.2020