어느분의 코드를 보다가 배울점이 있어서 간단히 프로토 타입코드로 작성해보았다.
========= Angular js ===========
1. Pagenation 이라는 클래스를 만들어서
view에서 검색관련한 이벤트 등이 있을 경우 페이징 할 때 필요한 변수들을 받아놓는다.
export class Pagination {
// 다음 가져올 시작 부분
offset: number;
// 한번에 가져올 양
limit: number;
// 소팅 조건
sortOption [
{
prop: string;
dir: string;
}
];
// 검색 조건 및 정보
searchOption: 'AND' | 'OR';
searchwords: string[];
//생성자로는 기본값을 설정했다 .!!
constructor(type?: string) {
this.searchOp = 'OR';
this.keywords = [];
}
}
2. 앵귤러의 Service에서
showListPagePostslist ( pagination: Pagination ) 이라는 함수를 정의한다.
import { Pagination } from '@model/common/pagination';
Postslist(pagination: Pagination): Observable<any> { //pagenation 을 변수로 받는다.
const params: any = {
index: pagination.offset, //offset 과 limit 뽑아서 파라미터에 넣음.
size: pagination.limit //파라미터에는 스프링의 변수이름과 맞춰주자.
};
if (pagination.sortOption) { //sort가 정해져있다면
params.sortOption= `${pagination.sortOption[0].prop};${pagination.sortOption[0].dir}`; //파라미터에 넣음
}
if (pagination.keywords && pagination.keywords.length > 0) { //keyword가 있다면
params.searchOption = pagination.searchOption; //검색카테고리와 키워드 파라미터에 넣음
params.searchWords = pagination.searchWords;
}
return this.api.get(`${BASE_PATH}/Postslist`, params); // 파라미터와 함꼐 http요청을 보내준다.
// backend에 listPage라는 함수가 있다.
}
=========Spring Rest ==============
------------PostsListController.class ------------
@RequestMapping(value = "PostsList/{typeCd}")
public ApiResponseDto getList( @RequestParam(value = "index") int index,
@RequestParam(value = "size") int size,
@RequestParam(value = "sortOption", required = false) String[] sortProperties,
@RequestParam(value = "searchWords", required = false) String[] keywords,
@RequestParam(value = "searchOption", required = false) String searchOp) throws BackendException {
return PostService. getPostsList(index, size, sortProperties, keywords, searchOp));
}
------------ PostsService.class -------------
public PageWrapper getListPage(int index, int size, String[] sortOptions[],String[] searchWords, String searchOption) throws BackendException {
PageRequest pageRequest =new PageRequest(index, size, sortOptions);
if( keywords가 있다면 )
검색조건 = searchKeywords(keywords, searchOp));
Page<Posts> page = PostsRepository .findAll( 검색조건 , pageRequest );
return page;
}
'Spring' 카테고리의 다른 글
Annotation 으로 AOP 설정하기 (0) | 2020.07.20 |
---|---|
(IntelliJ 에러)Unknown run configuration type SpringBootApplicationConfigurationType (0) | 2020.07.10 |
MVC를 먼저배우고 RestAPI 를 배운 나의 고민.. View는 대체 어디있는가?!!! (0) | 2020.07.01 |
401 과 403 차이점 (0) | 2020.06.30 |
Security + OAUTH2 + H2 로그인 AccessDenied 경우 redirect되는 현상 (0) | 2020.06.30 |