2016-01-19 3 views
0

У меня очень тривиальная проблема, и это занимает много времени.Дата выпуска в @RequestBody

У меня есть служба Spring Rest, которая принимает объект модели в @RequestBody. То, что я передаю в объекте модели, - это дата в формате yyyy-MM-dd'T'HH: mm: ss.SSS'Z '. Проблема заключается в том, что я передаю дату i.e 2016-01-05T18: 30: 00.000Z из html в контроллер останова, он преобразуется в 2016-01-04T18: 30: 00.000Z.

@RequestMapping(method = RequestMethod.POST, path = "/clearance") 
public ResponseEntity<?> saveClearance(@RequestBody ClearanceModel record ) { 
..... 
.... 
} 

где ClearanceModel является:

public class ClearanceModel { 
    private String date; 

    public String getDate() { 
    return date; 
    } 

    public void setDate(String date) { 
    this.date = date; 
    } 
} 

FYI: эта проблема не возникает для EST, но имеет место для IST.

Любая помощь очень ценится.

+1

Где происходит это преобразование? Я вижу здесь только параметр String. Преобразован ли он в интерфейс? –

+0

@SimoneZandara: Я не делаю никаких явных преобразований, это сделано внутренне, я считаю, что Джексон. – biraj

+0

Джексон не будет преобразовывать данные String, поступающие с сервера неявно. ваша модель принимает строку, поэтому, если вы передадите строку «2016-01-05T18: 30: 00.000Z», это то, что вы получите. Можете ли вы показать вывод своего запроса в необработанном формате? –

ответ

1

Вопрос был выпущен в часовом поясе. Изменение типа данных в TIMESTAMP было исправлено, хотя ранее оно было типа DATE.

1

Jackson предоставляет способ указать пользовательский сериализатор для объектов. Таким образом, вы должны

  • реализации пользовательского сериалайзер (. Например ClearanceModelSerializer расширяет JsonSerializer <ClearanceModel>)
  • аннотировать ClearanceModel с @JsonSerializer (используя = ClearanceModelSerializer.class)

Подробнее здесь: http://www.baeldung.com/jackson-custom-serialization

+1

Вопрос оказался часовым поясом. Изменение времени на отметку времени зафиксировало его, хотя раньше оно было типа даты. – biraj