ページネーション処理での検索機能の動かし方を教えて欲しい。
解決したいこと
ページネーション処理での検索機能の動かし方を教えてください。
発生している問題・エラー
Caused by: org.thymeleaf.exceptions.TemplateProcessingException: Exception evaluating SpringEL expression: "page.first" (template: "user/list" - line 45, col 15)
原因: org.attoparser.ParseException: SpringEL 式を評価する例外: "page.first" (テンプレート: "user/list" - 行 45、列 15)
該当するソースコード
/**
* ユーザー情報一覧画面を表示
* @param model Model
* @return ユーザー情報一覧画面
*/
@RequestMapping(value = "user/list", method = RequestMethod.GET)
public String displayList(Model model,Pageable pageable) {
Page<User> playerPage = userService.getPlayers(pageable);
model.addAttribute("page", playerPage);
model.addAttribute("players", playerPage.getContent());
return "user/list";
}
// 検索機能
private static final String VIEW = "user/list";
@RequestMapping(path = "user/search" , method = RequestMethod.POST)
public ModelAndView login(ModelAndView mav, @RequestParam("name") String name) {
mav.setViewName(VIEW);
mav.addObject("name", name);
List<User> playerPage = userService.search(name);
mav.addObject("page", playerPage);
mav.addObject("pageSize", playerPage.size());
return mav;
}
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org">
<head th:replace="common/head :: head_fragment(title = 'ユーザー情報一覧', scripts = ~{::script}, links = ~{::link})"></head>
<body>
<div class="container">
<h1>ユーザー情報一覧</h1>
<div class="float-end">
<a th:href="@{/login}" class="btn btn-primary">ログアウトはこちら</a>
<a th:href="@{/user/add}" class="btn btn-primary">新規登録はこちら</a>
</div>
<table class="table table-striped">
<thead>
<form action = "search" method="post" name="form">名前 :
<input type="text" id="name" name="name" th:value="${name}"/>
<input type="submit" value="検索"/>
</form>
<tr>
<th>ID</th>
<th>名前</th>
<th>性別</th>
<th>更新日時</th>
<th>登録日時</th>
<th></th>
</tr>
</thead>
<tbody>
<tr th:each="user : ${players}" th:object="${user}" class="align-middle">
<td th:text="*{id}"></td>
<td th:text="*{name}"></td>
<td th:text="*{getGenderItems().get('__*{gender}__')}"></td>
<td th:text="${#dates.format(user.updateDate, 'yyyy/MM/dd')}"></td>
<td th:text="${#dates.format(user.createDate, 'yyyy/MM/dd')}"></td>
<td>
<a th:href="@{/user/{id}(id=*{id})}" class="btn btn-secondary">詳細</a>
</td>
</tr>
</tbody>
</table>
</div>
</body>
<!-- 以降がページネーション部分 -->
<div>
<ul>
<li style="display:inline;">
<span th:if="${page.first}"><<前</span>
<a th:if="${!page.first}" th:href="@{/user/list(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="@{/user/list(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="@{/user/list(page = (${page.number} + 1))}" >次>> </a>
</li>
</ul>
</div>
</html>
自分で試したこと
自分で調べましたが参考になるサイトが見つからず、
苦戦しているので教えてください。お願いします。
0