minami1
@minami1

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

ページネーション処理での検索機能の動かし方を教えて欲しい。

解決したいこと

ページネーション処理での検索機能の動かし方を教えてください。

発生している問題・エラー

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}">&lt;&lt;</span>
        <a th:if="${!page.first}" th:href="@{/user/list(page = ${page.number} - 1)}" >&lt;&lt;</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}">&gt;&gt;</span>
        <a th:if="${!page.last}" th:href="@{/user/list(page = (${page.number} + 1))}" >&gt;&gt; </a>
      </li>
    </ul>
  </div>
</html>

自分で試したこと

自分で調べましたが参考になるサイトが見つからず、
苦戦しているので教えてください。お願いします。

0

No Answers yet.

Your answer might help someone💌