私は最近 Spring MVC を学んでおり、Paginationなどの一般的なことを簡単に達成できることに感銘を受けました。たとえば、次のようなコントローラーメソッドがあります。
@RequestMapping(value="/showAllItems")
public String showAllItems(Model model, Pageable pageable) {
model.addAttribute("itemPage", itemService.getAllItems(pageable));
return ViewNamesHolder.SHOW_ALL_ITEMS;
}
Spring はこのページング可能なオブジェクトを作成することでバックエンドで信じられないほどサポートしてくれますが、私の知る限り、この種の Spring オブジェクトをフロントエンドでサポートする UI フレームワークはありません。この完全に単純な Controller メソッドを記述した後、このページング可能なオブジェクトがどのように表示されるかについて、フロントエンド側で再び一人になります。
たとえば、Bootstrapがあります。美しいインターフェイス、非常に優れた機能。この記事は、Spring MVC を Bootstrap と統合する方法の非常に良い例です: http://www.javacodegeeks.com/2013/03/implement-bootstrap-pagination-with-spring-data-and-thymeleaf.html
問題は、まだ多くのコードを書かなければならないことです。これは上記の記事の jsp の例で、最後にページネーション バーのみを生成します。
<!-- Pagination Bar -->
<div th:fragment='paginationbar'>
<div class='pagination pagination-centered'>
<ul>
<li th:class='${page.firstPage}? 'disabled' : '''>
<span th:if='${page.firstPage}'>← First</span>
<a th:if='${not page.firstPage}' th:href='@{${page.url}(page.page=1,page.size=${page.size})}'>← First</a>
</li>
<li th:class='${page.hasPreviousPage}? '' : 'disabled''>
<span th:if='${not page.hasPreviousPage}'>«</span>
<a th:if='${page.hasPreviousPage}' th:href='@{${page.url}(page.page=${page.number-1},page.size=${page.size})}' title='Go to previous page'>«</a>
</li>
<li th:each='item : ${page.items}' th:class='${item.current}? 'active' : '''>
<span th:if='${item.current}' th:text='${item.number}'>1</span>
<a th:if='${not item.current}' th:href='@{${page.url}(page.page=${item.number},page.size=${page.size})}'><span th:text='${item.number}'>1</span></a>
</li>
<li th:class='${page.hasNextPage}? '' : 'disabled''>
<span th:if='${not page.hasNextPage}'>»</span>
<a th:if='${page.hasNextPage}' th:href='@{${page.url}(page.page=${page.number+1},page.size=${page.size})}' title='Go to next page'>»</a>
</li>
<li th:class='${page.lastPage}? 'disabled' : '''>
<span th:if='${page.lastPage}'>Last →</span>
<a th:if='${not page.lastPage}' th:href='@{${page.url}(page.page=${page.totalPages},page.size=${page.size})}'>Last →</a>
</li>
</ul>
</div>
</div>
作成者のおかげで、この JSP ページは再利用可能になります。それでも、この種のことを自動的に処理するフレームワークが必要です。これを私は Spring MVC Compatible と呼んでいます。そして、これは、ページネーションをほぼ自動的に処理するフロントエンドでは次のように見えるはずです。
<div springUI:fragment='paginationbar' springUI:object='itemPage'/>
おそらく、firstAndLastButtonsVisible や currentPageDisabled などの追加の属性を使用して..
上記の例では、オブジェクトitemPageに必要なすべての情報 (pageCount など) があるため、この単純さ (またはほぼ) が可能です。
もう一度質問ですが、Spring MVC と非常に互換性のある UI フレームワークはありますか?