Я разрабатываю Rest Apis, используя Spring mvc 5.0.8 и Джексон 2.9.8
Я хочу установить нумерацию страниц по умолчанию для каждого запроса, если свойство пагинацииотсутствует в запросе json клиента.
Я достигаю этого, создавая Pagination объект из HttpRequestEntity конструктора класса, но если запрос pagination присутствует в запросе json, то Джексон создание еще одного Пагинация объекта путем вызова конструктора по умолчанию класса Пагинация перед вызовом метода сеттера ( setPagination (Pagination pagination) ) из HttpRequestEntity class.
JackSon не создаст объект свойства и не ударит метод установки свойства, если свойство не присутствует в JSON запрос
Я также попробовал это, используя Interceptor prepreHandle
request.setAttribute("pagination", new Pagination());
Но это не обновит тело HttpServletRequest , я должен повторноceive это свойство с контроллером параметр, который должен быть аннотирован с @RequestAttribute.
Согласно моему пониманию HttpMessageConverter только карты HttpServletRequest корпус с пружинной аннотацией @ RequestBody .
Json Request
{
//not sending pagination
/*
"pagination":{
"offset":0,
"limit:50
},
*/
"data":{
"requestUrl":"some value"
...
},
"timeStamp":"Mon Sep 23 2019 02:15:47 GMT+0530 (India Standard Time)"
}
Контроллер
@RestController
@RequestMapping("/api/v1")
public class LocaldbController {
@Autowired
private LocaldbService localdbService;
@PostMapping("/apidetails/filter")
public void getAllApiDetails(@RequestBody HttpRequestEntity<ApiDetailsFilterDto> requestEntityDto) {
System.out.println(requestEntityDto.getPagination().getLimit());
}
}
public class HttpRequestEntity<T> {
public Pagination pagination;
private T data;
private String timeStamp;
public HttpRequestEntity() {
this.pagination = new Pagination(); //To set Default value
}
public Pagination getPagination() {
return pagination;
}
public T getData() {
return data;
}
public String getTimeStamp() {
return timeStamp;
}
public void setTimeStamp(String timeStamp) {
this.timeStamp = timeStamp;
}
public void setPagination(Pagination pagination) {
this.pagination = pagination;
}
}
public class Pagination {
private int offset = 0;
private int limit = 50;
public Pagination() {
System.out.println("pagination");
}
public int getOffset() {
return offset;
}
public int getLimit() {
return limit;
}
public void setOffset(int offset) {
this.offset = offset;
}
public void setLimit(int limit) {
this.limit = limit;
}
}
Так что любой может сказать мне, как установить Значения по умолчанию в Свойства , если свойства отсутствуют в запросе JSON .
Спасибо за ваше внимание.Я с нетерпением жду вашего ответа.