From a217ef0363faa55d9b007163d7f9e7ed9b29704b Mon Sep 17 00:00:00 2001 From: Leonid Date: Sun, 2 Mar 2025 19:10:13 +0300 Subject: [PATCH] =?UTF-8?q?-=20=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=B1=D0=B0=D0=B7=D0=BE=D0=B2=D1=83=D1=8E=20=D1=80=D0=B5?= =?UTF-8?q?=D0=B0=D0=BB=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D1=8E=20=D0=BF=D0=B0?= =?UTF-8?q?=D0=B3=D0=B8=D0=BD=D0=B0=D1=86=D0=B8=D0=B8=20=D0=B4=D0=BB=D1=8F?= =?UTF-8?q?=20=D1=81=D0=BE=D0=BE=D0=B1=D1=89=D0=B5=D0=BD=D0=B8=D0=B9.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit https://www.youtube.com/watch?v=Sc3EQBy0tuk&list=PLU2ftbIeotGpAYRP9Iv2KLIwK36-o_qYk&index=28 --- .../sweater/controller/MainController.java | 16 +++++-- .../sweater/repository/MessageRepository.java | 9 ++-- .../resources/templates/parts/messageList.ftl | 44 ++++++++++--------- src/main/resources/templates/parts/pager.ftl | 26 +++++++++++ 4 files changed, 68 insertions(+), 27 deletions(-) create mode 100644 src/main/resources/templates/parts/pager.ftl diff --git a/src/main/java/net/sytes/kashey/sweater/controller/MainController.java b/src/main/java/net/sytes/kashey/sweater/controller/MainController.java index 526e754..28ca0b2 100644 --- a/src/main/java/net/sytes/kashey/sweater/controller/MainController.java +++ b/src/main/java/net/sytes/kashey/sweater/controller/MainController.java @@ -5,6 +5,9 @@ import net.sytes.kashey.sweater.domain.Message; import net.sytes.kashey.sweater.repository.MessageRepository; import net.sytes.kashey.sweater.security.CustomUserDetails; import org.springframework.beans.factory.annotation.Value; +import org.springframework.data.domain.Pageable; +import org.springframework.data.domain.Sort; +import org.springframework.data.web.PageableDefault; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -35,14 +38,17 @@ public class MainController { } @GetMapping("/main") - public String findAllMessages(@RequestParam(required = false, defaultValue = "") String tag, Model model) { + public String findAllMessages(@RequestParam(required = false, defaultValue = "") String tag, + Model model, + @PageableDefault(sort = {"id"}, direction = Sort.Direction.DESC) Pageable pageable) { if (tag == null || tag.isEmpty()) { - model.addAttribute("messages", messageRepository.findAll()); + model.addAttribute("page", messageRepository.findAll(pageable)); } else { - model.addAttribute("messages", messageRepository.findByTag(tag)); + model.addAttribute("page", messageRepository.findByTag(tag, pageable)); } model.addAttribute("tag", tag); + model.addAttribute("url", "/main"); return "main"; } @@ -51,6 +57,7 @@ public class MainController { @Valid Message message, BindingResult bindingResult, Model model, + @PageableDefault(sort = {"id"}, direction = Sort.Direction.DESC) Pageable pageable, @RequestParam("file") MultipartFile file ) throws IOException { @@ -65,7 +72,8 @@ public class MainController { messageRepository.save(message); model.addAttribute("message", null); } - model.addAttribute("messages", messageRepository.findAll()); + model.addAttribute("page", messageRepository.findAll(pageable)); + model.addAttribute("url", "/main"); model.addAttribute("tag", ""); return "main"; } diff --git a/src/main/java/net/sytes/kashey/sweater/repository/MessageRepository.java b/src/main/java/net/sytes/kashey/sweater/repository/MessageRepository.java index d725455..f61a68f 100644 --- a/src/main/java/net/sytes/kashey/sweater/repository/MessageRepository.java +++ b/src/main/java/net/sytes/kashey/sweater/repository/MessageRepository.java @@ -1,10 +1,13 @@ package net.sytes.kashey.sweater.repository; import net.sytes.kashey.sweater.domain.Message; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; import org.springframework.data.repository.CrudRepository; -import java.util.List; - public interface MessageRepository extends CrudRepository { - List findByTag(String tag); + + Page findByTag(String tag, Pageable pageable); + + Page findAll(Pageable pageable); } diff --git a/src/main/resources/templates/parts/messageList.ftl b/src/main/resources/templates/parts/messageList.ftl index e2359e3..8240885 100644 --- a/src/main/resources/templates/parts/messageList.ftl +++ b/src/main/resources/templates/parts/messageList.ftl @@ -1,25 +1,29 @@ <#include "security.ftl"> +<#import "pager.ftl" as p> -
- <#list messages as message> -
-
- <#if message.filename??> - - -
- ${message.text}
- #${message.tag} -
- \ No newline at end of file + <#else> +

No messages found

+ +
+<@p.pager url page /> \ No newline at end of file diff --git a/src/main/resources/templates/parts/pager.ftl b/src/main/resources/templates/parts/pager.ftl new file mode 100644 index 0000000..f8317d7 --- /dev/null +++ b/src/main/resources/templates/parts/pager.ftl @@ -0,0 +1,26 @@ +<#macro pager url page> +
+
    +
  • Pages
  • + <#list 1..page.totalPages as p> + <#if (p - 1) == page.number> +
  • ${p}
  • + <#else > +
  • ${p}
  • + + +
+
+
+ +
+ \ No newline at end of file