SpringBoot + Thymeleaf로 페이징 실현
15745 단어 spring-bootThymeleaf
개요
검증 환경
구현
Entity
Player.java
@Entity
@Getter
@Setter
public class Player {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String name;
private Integer number;
private String position;
}
리포지토리
PlayerRepository.java
@Repository
public interface PlayerRepository extends JpaRepository<Player, Integer> {
public Page<Player> findAll(Pageable pageable);
}
htps : // / cs. sp 링 g. 이오/sp린 g-다타/코몬 s/도 cs/쿤 t/아피/오르/sp린 gf 라메를 rk/다타/도마인/파게. HTML
서비스
PlayerService.java
@Service
public class PlayerService {
@Autowired
private PlayerRepository playerRepository;
public Page<Player> getPlayers(Pageable pageable) {
return playerRepository.findAll(pageable);
}
}
컨트롤러
PlayerController.java
@Controller
@RequestMapping("/pages/players")
public class PlayerController {
@Autowired
private PlayerService playerService;
@GetMapping
public String index(Pageable pageable, Model model) {
Page<Player> playerPage = playerService.getPlayers(pageable);
model.addAttribute("page", playerPage);
model.addAttribute("players", playerPage.getContent());
return "pages/index";
}
}
구성
WebConfig.java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
PageableHandlerMethodArgumentResolver resolver = new PageableHandlerMethodArgumentResolver();
// 1ページに表示する最大件数(10件)を設定する
resolver.setMaxPageSize(10);
argumentResolvers.add(resolver);
}
}
resolver.setFallbackPageable(PageRequest.of(0, 10));
※ PageRequest.of (페이지 번호, 페이지 크기) View(Thymeleaf)
index.html
<!-- body部 -->
<h1>INTER PLAYER</h1>
<table border="1" bordercolor="navy">
<thead>
<tr>
<th>NAME</th>
<th>NUMBER</th>
<th>POSITION</th>
</tr>
</thead>
<tbody>
<tr th:each="player : ${players}">
<td th:text="${player.name}"></td>
<td th:text="${player.number}"></td>
<td th:text="${player.position}"></td>
</tr>
</tbody>
</table>
<!-- 以降がページネーション部分 -->
<div>
<ul>
<li style="display:inline;">
<span th:if="${page.first}"><<前</span>
<a
th:if="${!page.first}"
th:href="@{/pages/players(page = ${page.number} - 1)}"
>
<<前
</a>
</li>
<li
th:each="i : ${#numbers.sequence(0, page.totalPages - 1)}"
style="display:inline; margin-left:10px;"
>
<span th:if="${i} == ${page.number}" th:text="${i + 1}">1</span>
<a
th:if="${i} != ${page.number}"
th:href="@{/pages/players(page = ${i})}"
>
<span th:text="${i+1}">1</span>
</a>
</li>
<li style="display:inline; margin-left:10px;">
<span th:if="${page.last}">次>></span>
<a
th:if="${!page.last}"
th:href="@{/pages/players(page = (${page.number} + 1))}"
>
次>>
</a>
</li>
</ul>
</div>
인터페이스 페이지 <T>
방법
상세
getContent()
페이지 콘텐츠를 List로 반환
getNumber()
얼마나 많은 페이지인지 반환
getSize()
페이지 크기 반환
getTotalPages()
총 페이지 수 반환
isFirst()
첫 페이지이거나 진위 값을 반환합니다.
isLast()
마지막 페이지이거나 진위 값을 반환합니다.
마지막으로
참조
2020/3/14 추가
@PageableDefault
htps : // / cs. sp 링 g. 이오 / sp 링 g-data / Data-Komon s / Docs / Crun t / Api / Og / sp Rin gf Rame 푹신한 lt. HTMLPlayerController.java
@Controller
@RequestMapping("/pages/players")
public class PlayerController {
@Autowired
private PlayerService playerService;
@GetMapping
public String index(@PageableDefault(page = 0, size = 10) Pageable pageable, Model model) {
Page<Player> playerPage = playerService.getPlayers(pageable);
model.addAttribute("page", playerPage);
model.addAttribute("players", playerPage.getContent());
return "pages/index";
}
}
Reference
이 문제에 관하여(SpringBoot + Thymeleaf로 페이징 실현), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/tanibuchi12/items/6c8fedbc19bdb277d6f2텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)