Я использую Джерси 1.21.1, и я получаю странное поведение при датах отмены.Джерси (MOXy) усекающий JSON даты
Упрощенная версия моего POJO:
@XmlRootElement
public class Invoice {
private Date invoiceDate;
private Date invoiceDate2;
}
Мой метод ресурс:
@PUT
@Consumes(MediaType.APPLICATION_JSON)
public Response putInvoice(Invoice invoice) { .. }
код JavaScript, который вызывает эта служба использует JSON.stringify
для получения следующего запроса HTTP полезной нагрузки (это то, что было на самом деле отправлено в соответствии с отладчиком Chrome):
{"invoiceDate": "2015-10-27T 04: 00: 00.000Z "," invoiceDate2 ":" 2015-10-27T08: 00: 00.000Z "}
Пока все хорошо. Но когда я останавливаюсь в контрольной точке внутри putInvoice
и изучить Java даты invoice.invoiceDate и invoice.invoiceDate2, они оба имеют один и тот же fastTime:
(который равен 27 октября, 2015 12:00:00 UTC).
Я нахожусь в недоумении, почему Джерси/МОКСы, похоже, не могут разобрать то, что выглядит мне как стандартная дата UTC ISO. Я могу только предположить, что я делаю что-то неправильно или делаю плохое предположение. Помощь будет принята с благодарностью.
Что-то еще я должен был заметить раньше: Jersey + MOXy делает то же самое усечение, когда он маршалирует java.sql.Date. То есть, когда я делаю HTTP GET на ресурсе, в строке даты нет компонента времени или часового пояса, например. '2015-12-15'. Таким образом, мое предположение, что это было непреднамеренно вызвано обработкой исключений, кажется неправильным. Это непротиворечиво и, следовательно, чувствует себя преднамеренным, но я затрудняюсь объяснить, почему с java.sql.Date следует обращаться таким образом. – Bampfer