Spring MVC에서 페이지화 구현 방법 3
Spring MVC에서 페이지화에 사용할 수 있는 즉시 사용 가능하고 구현하기 쉬운 표준 페이지화 구성 요소/태그-lib 또는 코드-샘플이 있습니까?
와 의 다른 클래스를 확인합니다.
다음과 같은 몇 가지 예는 샘플의 Jetstore를 참조하십시오.
public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
String keyword = request.getParameter("keyword");
if (keyword != null) {
if (!StringUtils.hasLength(keyword)) {
return new ModelAndView("Error", "message", "Please enter a keyword to search for, then press the search button.");
}
PagedListHolder productList = new PagedListHolder(this.petStore.searchProductList(keyword.toLowerCase()));
productList.setPageSize(4);
request.getSession().setAttribute("SearchProductsController_productList", productList);
return new ModelAndView("SearchProducts", "productList", productList);
}
else {
String page = request.getParameter("page");
PagedListHolder productList = (PagedListHolder) request.getSession().getAttribute("SearchProductsController_productList");
if (productList == null) {
return new ModelAndView("Error", "message", "Your session has timed out. Please start over again.");
}
if ("next".equals(page)) {
productList.nextPage();
}
else if ("previous".equals(page)) {
productList.previousPage();
}
return new ModelAndView("SearchProducts", "productList", productList);
}
}
저도 그렇게 하는 방법을 찾고 있었는데, 표준 구성 요소나 태그립을 찾을 수 없었습니다.페이징은 데이터베이스에서 이미 페이징으로 데이터를 검색해야 하기 때문에 매우 구체적일 수 있기 때문에 주로 페이징이 될 수 있습니다(Hibernate를 사용하는 경우 Criteria API를 사용하여 쉽게 검색할 수 있습니다).저는 다음과 같은 것을 생각해냈습니다.
public class Pager
{
private int page;
private int results;
private String sortOrder;
private String sortColumn;
// Getters and setters
}
@Controller
public class StuffController
{
@Autowired SomeEntityService someEntityService;
@RequestMapping("/test.html", method = Method.GET)
public void getStuffPaged(@RequestParam("id") String id, Pager pager, ModelMap mm)
{
mm.addAttribute("entities", someEntityService.get(id, pager));
}
}
지금 요청을 수행하는 경우http://domain/app/test.html?id=10&page=1&results=30&sortOrder=asc
호출기 개체가 요청에 표시됩니다.
Spring Data JPA 프로젝트에 대해 들어본 적이 있습니까?페이지블 인터페이스를 사용하는 유연한 솔루션이 있습니다.저는 그것이 깨끗하고, 보일러 플레이트가 없는 페이지화를 달성하는 가장 간단한 방법이라는 것을 알게 되었습니다.Spring Data JPA 홈페이지에서 더 많은 것을 확인하세요.
아무도 떠오르지 않고 구글도 그것에 대한 구체적인 구성 요소를 밝히지 않습니다(구체적인 예와 힌트를 꽤 많이 제공하지만).그러나 이론적으로는 버튼 한 묶음과 요청 매개 변수 한 개(또는 두 개)로 충분합니다.그런 다음 SQL/DB가 작업을 수행하도록 합니다.이전에 JSP/서블릿/DAO 컨텍스트에서 유사한 질문에 대한 답변을 게시한 적이 있습니다.
그것은 기본적으로 통과로 요약됩니다.firstrow
(페이지에 표시될 첫 번째 행의 색인) 요청 매개 변수로 주위에 있고 페이지 형태에 두 개의 버튼/키가 있으며, 이는 다음과 같다.firstrow
와 함께rowcount
(한 페이지에 한 번에 표시되는 행의 양)을 SQL 쿼리와 함께 사용하여 결과의 하위 집합을 반환합니다.LIMIT
,OFFSET
해당 DB에 따라 절, 하위 선택 또는 특정 함수를 지정할 수 있습니다.자세한 코드 예제 및 SQL 쿼리는 위의 링크된 답변을 참조하십시오.
여기 Spring Data JPA 참조 문서에 대한 링크가 있습니다. 웹 페이지에 대한 접근 방식이 매우 깔끔합니다.
얼마 전에 스프링 프레임워크로 페이지화에 초점을 맞춘 오픈 소스 자바 라이브러리를 출판했습니다.
비록 그것이 매우 성공적이지는 않았지만 아마도 누군가가 그것을 시도하는 것에 관심이 있을 것입니다.
다음과 같이 사용할 수 있는 예가 있습니다.
온라인 예제는 다소 구식이므로 소스포지에서 jdal-sample 파일을 다운로드하는 것이 좋습니다.
언급URL : https://stackoverflow.com/questions/2245035/how-to-implement-pagination-in-spring-mvc-3
'sourcecode' 카테고리의 다른 글
배열에서 여러 개의 임의 요소를 가져오는 방법은 무엇입니까? (0) | 2023.08.12 |
---|---|
크롬 확장에서 jQuery를 어떻게 사용합니까? (0) | 2023.08.12 |
스핑크스SE로 MVA를 검색하려면 어떻게 해야 합니까? (0) | 2023.08.12 |
파일에서 찾기 및 바꾸기 실패 (0) | 2023.08.12 |
부트스트랩 버튼 드롭다운 제목에 선택한 항목을 표시하는 방법 (0) | 2023.08.12 |