현재 PageImpl을 통해서 내 리스트를 Page로 반환하게 한 후의 결과 값이다
{
"success": true,
"code": 0,
"result": {
"data": {
"totalElements": 11,
"totalPages": 6,
"hasNext": true,
"content": [
{
"id": 458,
"name": "뚜레쥬르 얼그레이 크림빵 ",
"type": "TYPE4",
"itemNumber": 4000020,
"revision": 65,
"status": "WORKING"
},
{
"id": 456,
"name": "SATURDAY",
"type": "TYPE4",
"itemNumber": 4000691,
"revision": 65,
"status": "WORKING"
}
]
}
}
}
그러나 내가 진행하는 프로젝트에서는 프론트 분께서는 내가 건네주는 데이터로 아래와 같은 표를 만들어야 한다.
그래서 나는 저 열에 해당하는 인덱스 값들을 넘겨줘야 한다.
아래와 같이 한 변수를 더 추가하고 싶은 것이다~
public class CustomPageImpl<T> extends PageImpl<T> {
private final List<String> indexes;
//새로운 인스턴스 변수 생성
@JsonCreator
public CustomPageImpl(List content, Pageable pageable, long total, List indexes) {
super(content,pageable.getSort().isSorted() ? pageable : PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by("createdAt").descending()), total);
this.indexes = indexes;
// 생성자를 통해 인스턴스 변수 추가 초기화
}
@JsonCreator
public CustomPageImpl(List content, List<String> indexes) {
super(content);
this.indexes = indexes;
// 생성자를 통해 인스턴스 변수 추가 초기화
}
이를 생성자를 통해 초기화를 진행해주었다.
참고로 디폴트 생성자는
public CustomPageImpl(List<T> content, Pageable pageable, long total, List<String> indexes) {
super(content, pageable, total);
}
public CustomPageImpl(List<T> content, List<String> indexes) {
super(content);
}
이와 같이 생겼었는데, 내가 새로 추가한 필드도 같이 초기화해준 것이다.
그리고 그냥 이렇게만 해도 안생김, Jsongetter을 통해서 get해주는 것 추가!
@JsonGetter(value = "indexes")
public List getPaging() {
return indexes;
}
public class CustomPageImpl<T> extends PageImpl<T> {
private final List<String> indexes;
//새로운 인스턴스 변수 생성
@JsonCreator
public CustomPageImpl(List content, Pageable pageable, long total, List indexes) {
super(content,pageable.getSort().isSorted() ? pageable : PageRequest.of(pageable.getPageNumber(), pageable.getPageSize(), Sort.by("createdAt").descending()), total);
this.indexes = indexes;
// 생성자를 통해 인스턴스 변수 추가 초기화
}
@JsonCreator
public CustomPageImpl(List content, List<String> indexes) {
super(content);
this.indexes = indexes;
// 생성자를 통해 인스턴스 변수 추가 초기화
}
@JsonGetter(value = "contents")
@Override
public List getContent() {
return super.getContent();
}
@JsonGetter(value = "indexes")
public List getPaging() {
return indexes;
}
}
참고로 오늘 자바의 정석 스터디에서 배운 내용도 리마인드 할 수 있어서 좋았습니다! 바로~