Проблемы с передачей ISODate из php-интерфейса в бэк-энд Spring, дата публикуется правильно, но принимается как нулевое значение

Я отправляю данные json, представляющие некоторые настройки из php-интерфейса, в бэкэнд с пружинной загрузкой. В этих данных есть значение для даты, которую я отформатировал для даты ISO8601. Я знаю, что API использует этот формат для отладки ответа на запрос get для текущих настроек.

Моя проблема в том, что дата получена на стороне контроллера пружины как нулевая. Дата определенно отправляется в правильном формате со стороны php с помощью curl.

Я попытался явно добавить формат даты в объекте домена, а также добавить привязку инициализации в мой контроллер, но ни одно из решений не помогло мне.

Ниже приведен метод контроллера принимающей пружины и соответствующие части моего класса объектов домена для настроек:

/**
 * update settings in db on request from app
 *
 * @param deviceSettings
 */
@PostMapping(value = "/updateSettings")
void update(@RequestBody DeviceSettings deviceSettings) {
    deviceSettingsService.updateDeviceSettings(deviceSettings);
    logger.info("updated device with id : {}", deviceSettings.getDeviceId());
}

===========================

@Document(collection = "deviceSettings")
public class DeviceSettings {
    /**
     * Date where settings were last updated
     */
    @Field(value = "lastUpdate")
    private Date lastUpdatedDate;

    @JsonSerialize(using = ISODateSerializer.class)
    public Date getLastUpdatedDate() {
        return lastUpdatedDate;
    }

    public void setLastUpdatedDate(Date lastUpdatedDate) {
        this.lastUpdatedDate = lastUpdatedDate;
    }
}

===========================

РЕДАКТИРОВАТЬ: уже пробовал добавить:

===========================

Контроллеру:

@InitBinder
public void initBinder(WebDataBinder binder) {
    SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

    binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));
}

К объекту домена:

/**
 * Date where settings were last updated
 */
@DateTimeFormat(pattern="yyyy-MM-dd'T'HH:mm:ssZ")
@Field(value = "lastUpdate")
private Date lastUpdatedDate;

Любые предложения о следующих шагах будет принята с благодарностью.

0 ответов

Другие вопросы по тегам