Я думаю, что @PathVariable
тогда не подходит для этой цели.@PathVariable
означает, что параметр является частью URL.Допустим, есть @PathVariable("id")
и @RequestMapping(value = "/groups/{id}")
.Тогда значение id
будет передано как параметр {id}
.В вашем случае лучший способ добиться результата - создать некоторый класс Model и добавить в него список DateRange
в качестве свойства: я только что смоделировал случай, и он прекрасно работает для меня:
public class DateRange {
private Date fromDate;
private Date toDate;
public Date getFromDate() {
return fromDate;
}
public void setFromDate(Date fromDate) {
this.fromDate = fromDate;
}
public Date getToDate() {
return toDate;
}
public void setToDate(Date toDate) {
this.toDate = toDate;
}
}
public class DateRangeModel {
@JsonProperty
private List<DateRange> dateRanges;
public List<DateRange> getDateRanges() {
return dateRanges;
}
public void setDateRanges(List<DateRange> dateRanges) {
this.dateRanges = dateRanges;
}
public DateRangeModel() {
}
}
@RequestMapping(
value = "/testapi/test", method = RequestMethod.PUT,
produces = MediaType.APPLICATION_JSON_UTF8_VALUE)
public @ResponseBody DateRangeModel test(
@RequestBody DateRangeModel data,
HttpServletRequest request) {
return data;
}
Тело запроса:
{
"dateRanges": [
{
"fromDate": "2018-10-26",
"toDate": "2018-10-29"
},
{
"fromDate": "2018-10-21",
"toDate": "2018-10-20"
}
]
}
Ответ:
{
"dateRanges": [
{
"fromDate": 1540501200000,
"toDate": 1540760400000
},
{
"fromDate": 1540069200000,
"toDate": 1539982800000
}
]
}
Конечно, проблема десериализации дат вне сцены