public abstract class EntityHandler<T,Q> { public String findForm(EntityPageable pageable, Model m, Q query, BindingResult e){...} . . } public interface EntityService<T, Q>{ public Iterable<T> findForm(Q query, EntityPageable pageable); . . } public interface EntityRepository<T, ID extends Serializable> { public List<T> findAll(Object query); public Page<T> findAll(Object query, Pageable pageable); . . }
1. 클라이언트에서 검색 조건 및 페이지 정보 파라미터와 함께 Controller Layer 를 호출한다.
2. Controller Layer 의 findForm() 에서 Service Layer 의 findForm() 를 호출한다.
3. Service Layer 의 findForm() 에서 EntityPageable 의 isEnable() 을 판단하여, Repository Layer 의 적절한 findAll() 를 호출하여 EntityPage 또는 List 를 생성한다.
4. Controller findForm() 에서 Service 로 부터 리턴 받은 EntityPage 또는 List 를 "model_query_result" 라는 이름으로 Model 에 담는다.
5. View Layer 에서 이를 클라이언트에 출력한다.
Springfield 는 검색 결과 데이터행의 Paging 과 Ordering 처리를 위해 com.u2ware.springfield.domain.EntityPageable 을 사용한다. 기본 등록 되는 EntityPageableArgumentResolver 가 "model_query_pageable" 라는 Prefix 를 가진 HTTP Parameter 를 수집하여 EntityPageable 를 생성한다. 다음표는 파라미터의 이름과 이에 매치되는 EntityPageable 의 속성들이다.
HTTP Request Parameter Name | Description |
model_query_pageable.enable | Paging 처리 여부 , default value is true |
model_query_pageable.pageNumber | pageNumber , default value is 0 |
model_query_pageable.pageSize | pageSize , default value is 10 |
model_query_pageable.sortOrder[].property | order property name |
model_query_pageable.sortOrder[].direction | order direction value |
Springfield 는 검색 결과 객체로 List 또는 com.u2ware.springfield.domain.EntityPage 을 사용한다. EntityPage 는 결과 데이터행과 각종 Paging 결과 정보들을 담고 있다. 다음표는 EntityPage 의 속성들이며, View 단에서 EL 로 접근가능하다.
EL | Description |
model_query_result.content | Content List |
model_query_result.pageNumber | pageNumber |
model_query_result.pageSize | pageSize |
model_query_result.totalElements | total row Count |
model_query_result.totalPages | total Pages Count |
model_query_result.previousPage | previous page number of indexing |
model_query_result.beginPage | begin page number of indexing |
model_query_result.endPage | end page number of indexing |
model_query_result.nextPage | next page number of indexing |