質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

解決済

Spring bootで値を保持したままページネーションを行いたい

engnao
engnao

総合スコア28

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。

1回答

0評価

0クリップ

1459閲覧

投稿2020/08/15 01:15

編集2020/08/15 02:11

【目標】
Spring boot を使用して、検索画面の値を保持しつつ、ページネーションを行いたいです。
因みに、検索結果をDBから取得して表示させる所までは実装できています。

【質問内容】
検索画面の値を保持しつつ、ページネーションを行うコーディングを行いたいのですが、
以下の点で行き詰っています。

 ・検索結果画面の次のページ番号をクリックすると、次の検索結果が表示されない。
(Controllerに対してGetを送っているからだと思っている。。)

 尚、値の保持には hidden を使用する実装にしたいです。
気付いた点やアドバイスだけでも大丈夫です。
どなたか、ご教示の程よろしくお願いします。

【使用言語、ツール等】
・Spring boot
・java
・Thymeleaf
・jpa

【ソースコード】
■添付のソースコード
TestController (Controller)
BeginDisplay.html (初期表示の検索画面)
ResultDisplay.html (検索結果の表示画面)

・TestController (Controller)

java

package com.example.demo.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.servlet.ModelAndView; import com.example.demo.entity.TestEntity; import com.example.demo.service.TestService; @Controller @RequestMapping(value = "/lesson2") public class TestController { private static final String VIEW = "ResultDisplay"; @GetMapping("/search") public String startdisplay(){ return "BeginDisplay"; } @Autowired public TestService testservice; @PostMapping("/search") public ModelAndView search( ModelAndView mov, @RequestParam(name="title",required = false) String title, @RequestParam(name="titleKana",required = false) String titleKana, //@ModelAttribute SearchForm form, Pageable pageable ) { //ModelAndView //addObject(名前,保管するオブジェクト) mov.setViewName(VIEW); mov.addObject("title",title); mov.addObject("titleKana",titleKana); Page<TestEntity> resultdata = testservice.searchmaterial(title,titleKana,pageable); mov.addObject("result",resultdata); mov.addObject("resultSize", resultdata.getSize()); mov.addObject("page",resultdata); return mov; } }

・BeginDisplay.html (初期表示の検索画面)

html

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>Material Search Data</title> </head> <body> <form method="POST" action=""> <p>タイトル : <input type="text" id="title" name="title" th:value="${title}"></p> <p>タイトルカナ : <input type="text" id="title_kana" name="titleKana" th:value="${titleKana}"></p> <p><input type="submit" name="id" value="検索"></p> </form> <div th:if="${resultSize > 0}"><label th:text="${resultSize}"></label></div> <table border="1" th:if="${resultSize > 0}"> <tr> <td>material_no</td> <td>title</td> <td>title_kana</td> <td>reg_date</td> </tr> <tr th:each="data : ${result}"> <td th:text="${data.materialNo}"/> <td th:text="${data.title}"/> <td th:text="${data.titleKana}"/> <td th:text="${data.regDate}"/> </tr> </table> </body> </html>

・ResultDisplay.html (検索結果の表示画面)

html

<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org" xmlns:sec="http://www.thymeleaf.org/extras/spring-security"> <head> <meta charset="UTF-8"> <title>Material Search Data</title> </head> <body> <form method="POST" action=""> <p>タイトル : <input type="text" id="title" name="title" th:value="${title}"></p> <input type="hidden" name="title_serach" id="title_serach" th:value="${title}"> <p>タイトルカナ : <input type="text" id="title_kana" name="titleKana" th:value="${titleKana}"></p> <input type="hidden" name="titleKana_serach" id="titleKana_serach" th:value="${titleKana}"> <p><input type="submit" name="id" value="検索"></p> </form> <div th:if="${resultSize > 0}"><label th:text="${resultSize}"></label></div> <table border="1" th:if="${resultSize > 0}"> <tr> <td>material_no</td> <td>title</td> <td>title_kana</td> <td>reg_date</td> </tr> <tr th:each="data : ${result}"> <td th:text="${data.materialNo}"/> <td th:text="${data.title}"/> <td th:text="${data.titleKana}"/> <td th:text="${data.regDate}"/> </tr> </table> <form th:name=f th:action="@{/pagenate}" th:object="${page}" method="post"> <div class="float-right"> <div> <span th:text="${page.number+1}"></span> <input type="hidden" name="number_serach" id="number_serach" th:value="${page.number+1}"> <span>/</span> <span th:text="${page.totalPages}"></span> <span>頁を表示</span> </div> <div th:fragment='paginationbar'> <ul> <li class="page-item"> <span th:if="${page.first}">←先頭</span> <a th:if="${not page.first}" th:href="@{${url}(page=0)}">←先頭</a> </li> <li class="page-item" th:each='i : ${#numbers.sequence(0, page.totalPages-1)}'> <span th:if='${i}==${page.number}' th:text='${i+1}'>1</span> <a th:if='${i}!=${page.number}' th:href="@{${url}(page=${i})}"> <input type="hidden" name="i_serach" id="i_serach" th:value="${i}"> <span th:text='${i+1}'>1</span> </a> </li> <li class="page-item"> <span th:if="${page.last}">末尾➝</span> <a th:if="${not page.last}" th:href="@{${url}(page=(${page.totalPages}-1))}">末尾➝</a> </li> </ul> </div> </div> </form> <a href="javascript:document.f.submit()">ダウンロード</a> </body> </html>

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

ページネーション

Webアプリケーションにおいて、1ページに収まらないコンテンツを、各ページへのリンクを並べてアクセスしやすくする手法をページネーションと呼びます。

Thymeleaf

Thymeleaf(タイムリーフ)とは、Java用のテンプレートエンジンで、特定のフレームワークに依存せず使用することが可能です。