2

フォームにスプリング ページング フレームワークを使用しています。ここからページング フレームワークをテストしています: http://www.developer.com/java/web/article.php/10935_3830886_3/A-Pagination-Technique-Using-Spring.htm。私のフォームの URL には、次のようなページ番号が表示されます。

1 ページ目: http://...stuff../mySite/paging/paging/0 2 ページ目: http://...stuff../paging.do?action=list&p=1 3 ページ目: http:/ /...stuff../paging.do?action=list&p=2 など

ページングに一貫性がなく、コードで問題が発生します (最初の pg と 2 番目の pg の URL の違いに注意してください)。URL をきれいに保つために、ページ番号を非表示の jsp パラメータとして保存することを好みます。出来ますか?何かアドバイスはありますか?ありがとう。

私のコントローラー:

@Controller
@RequestMapping(value="/paging")
@ApplicationComponent(component="Paging")
public class PaginationController
{
private final Log logger = LogFactory.getLog(getClass());
@Autowired
private ItemDao itemDao;

@RequestMapping(value="/paging/{p}")
public ModelAndView list(@PathVariable("p") int page) throws Exception
    {
    ModelAndView mav = new ModelAndView("paging/paging");
    System.out.println("In the paging controller");     

    // get data in a list from jsp
    List searchResults = itemDao.getAllItems();
    // initialize PagedListHolder with the list, 
    PagedListHolder pagedListHolder = new PagedListHolder(searchResults);           
    pagedListHolder.setPage(page);
    int pageSize = 5;
    pagedListHolder.setPageSize(pageSize);      
    mav.addObject("pagedListHolder", pagedListHolder);      
    return mav;
}

}

JSP は次のとおりです。

<jsp:useBean id="pagedListHolder" scope="request"  type="org.springframework.beans.support.PagedListHolder"/>

<%-- // create link for pages, "~" will be replaced with the proper page number --%>
<c:url value="/paging.do" var="pagedLink">
   <c:param name="action" value="list"/>
    <c:param name="p" value="~"/>
</c:url>

<tg:paging pagedListHolder="${pagedListHolder}" pagedLink="${pagedLink}"/>


<%-- // show only current page data --%>
<table width="200px" border="1">
   <tr>
    <th width="20px">No.</th>
    <th>Print Items from pagedListHolder list</th>
</tr>
<c:forEach items="${pagedListHolder.pageList}" var="item">
    <tr>
        <td>${item.key}</td>
        <td style="color:blue;font-weight:bold;text-align:right">${item.data}</td>
    </tr>
</c:forEach>

4

0 に答える 0