はじめに
データベースの検索結果がある場合と無い場合(0件)でHTMLを切り替えたいなーと思い、
検索結果の件数によってHTMLを切り替える方法を調べました。
HTMLを切り替える方法
JAVA Spring BootとThymeleafを使用してpageableから要素数を取得することでHTMLタグを切り替えられそう。
という事で、.getNumberOfElements() メソッドを使用して検索結果の件数を取得してHTMLタグを切り替えてみました。
コード抜粋
index.html
<div th:if="${pageable.getNumberOfElements()}>0">
<P>要素あり</p>
</div>
<div th:if="${pageable.getNumberOfElements()}==0">
<P>要素なし</p>
</div>
Controller.java
package com.example.demo;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.PageRequest;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import java.util.List;
@Controller
public class DemoController {
@GetMapping("/")
public String index(Model model) {
// 例としてPageableオブジェクトを作成
int pageSize = 10;
int currentPage = 0;
// ページ数を取得するためにPageableを使用
PageRequest pageRequest = PageRequest.of(currentPage, pageSize);
// ページングされたデータ(ダミーデータを使用)
List<String> data = List.of("Item 1", "Item 2", "Item 3", "Item 4", "Item 5");
// ページングのためのPageオブジェクトを作成
Page<String> page = new PageImpl<>(data, pageRequest, data.size());
// Pageableとページ内データのサイズをテンプレートに渡す
model.addAttribute("pageable", page);
return "index";
}
}
結果
検索結果の件数が0件の場合と、1件でもある場合で切り替える事が出来ます。