Use Java to write paging and sorting functions for form data
Use Java to write the paging and sorting functions of form data
With the development of web applications, the paging and sorting functions of form data have become a standard requirement for many applications one. In this article, we will use Java to write a simple example to demonstrate how to implement the paging and sorting functions of form data.
Suppose we have a table that contains a large amount of user information. We want to display this data in pages on a web page and provide the ability to sort according to each column. We use Spring Boot as the development framework and Thymeleaf template engine to generate web pages.
First, we need to define a user entity class, including the user's name, age, email and other information. The code is as follows:
public class User { private String name; private int age; private String email; // 省略getter和setter方法 }
Next, we create a UserController class to handle user-related requests. In the UserController class, we use a List collection to store user data and initialize this collection in the constructor. The code is as follows:
@Controller public class UserController { private List<User> userList; public UserController() { // 初始化用户数据 userList = new ArrayList<>(); userList.add(new User("Alice", 25, "alice@example.com")); userList.add(new User("Bob", 30, "bob@example.com")); userList.add(new User("Charlie", 20, "charlie@example.com")); // 添加更多用户数据... } // 省略其他处理请求的方法 }
Next, we need to write a method to handle the paging and sorting functions. We will use the Pageable and Sort objects provided by the Spring framework to implement paging and sorting. The code is as follows:
@GetMapping("/users") public String getUsers(@RequestParam(value = "page", defaultValue = "0") int page, @RequestParam(value = "size", defaultValue = "10") int size, @RequestParam(value = "sort", defaultValue = "name") String sort, Model model) { // 创建PageRequest对象并指定分页参数 Pageable pageable = PageRequest.of(page, size, Sort.by(sort)); // 使用Pageable对象查询用户数据 Page<User> userPage = new PageImpl<>(userList, pageable, userList.size()); // 将用户数据和分页对象添加到模型中 model.addAttribute("users", userPage.getContent()); model.addAttribute("page", page); model.addAttribute("size", size); model.addAttribute("sort", sort); model.addAttribute("totalPages", userPage.getTotalPages()); // 返回用户列表页面 return "user-list"; }
In the above code, we use the @RequestParam annotation to obtain the paging parameters and sorting parameters in the request parameters. We use the PageRequest.of() method to create a Pageable object, and use the Sort.by() method to specify which column to sort by.
Finally, we use the PageImpl class to create a Page object and pass in user data and paging parameters. We then add user data and pagination information to the model for use by the template engine.
In the user list page, we can use the Thymeleaf template engine to generate the paging navigation bar and user table. The code is as follows:
<!DOCTYPE html> <html xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="UTF-8"> <title>User List</title> </head> <body> <h1 id="User-List">User List</h1> <table> <tr> <th><a th:href="@{/users?page=0&size=__${size}__&sort=name}">Name</a></th> <th><a th:href="@{/users?page=0&size=__${size}__&sort=age}">Age</a></th> <th><a th:href="@{/users?page=0&size=__${size}__&sort=email}">Email</a></th> </tr> <tr th:each="user : ${users}"> <td th:text="${user.name}"></td> <td th:text="${user.age}"></td> <td th:text="${user.email}"></td> </tr> </table> <div> <a th:href="@{/users?page=__${page - 1}__&size=__${size}__&sort=__${sort}__}" th:unless="${page == 0}">Previous</a> <span th:text="${page}"></span> <a th:href="@{/users?page=__${page + 1}__&size=__${size}__&sort=__${sort}__}" th:unless="${page + 1 >= totalPages}">Next</a> </div> </body> </html>
In the above code, we use Thymeleaf's loop instruction th:each to traverse user data, and use the th:href attribute to generate dynamic paging links. We also use Thymeleaf's conditional directive th:unless to hide the "Previous" and "Next" links and not display them when the condition is met.
Finally, we need to add some necessary configuration to the main class of the application to ensure that Spring Boot can handle the request correctly and load our template file. The code is as follows:
@SpringBootApplication public class Application { public static void main(String[] args) { SpringApplication.run(Application.class, args); } @Bean public ViewResolver viewResolver() { ThymeleafViewResolver resolver = new ThymeleafViewResolver(); resolver.setTemplateEngine(templateEngine()); resolver.setCharacterEncoding("UTF-8"); return resolver; } @Bean public TemplateEngine templateEngine() { SpringTemplateEngine engine = new SpringTemplateEngine(); engine.setEnableSpringELCompiler(true); engine.setTemplateResolver(templateResolver()); return engine; } @Bean public ITemplateResolver templateResolver() { SpringResourceTemplateResolver resolver = new SpringResourceTemplateResolver(); resolver.setPrefix("classpath:/templates/"); resolver.setSuffix(".html"); resolver.setTemplateMode(TemplateMode.HTML); return resolver; } }
In the above code, we configure the Thymeleaf template engine by adding beans such as viewResolver(), templateEngine(), and templateResolver().
Through the above steps, we have successfully implemented the paging and sorting functions of writing form data in Java. You can further expand and optimize this example according to actual needs to adapt it to more complex application scenarios. I hope this article can help you understand and implement the paging and sorting functions of form data.
The above is the detailed content of Use Java to write paging and sorting functions for form data. For more information, please follow other related articles on the PHP Chinese website!

Start Spring using IntelliJIDEAUltimate version...

When using MyBatis-Plus or other ORM frameworks for database operations, it is often necessary to construct query conditions based on the attribute name of the entity class. If you manually every time...

Java...

How does the Redis caching solution realize the requirements of product ranking list? During the development process, we often need to deal with the requirements of rankings, such as displaying a...

Conversion of Java Objects and Arrays: In-depth discussion of the risks and correct methods of cast type conversion Many Java beginners will encounter the conversion of an object into an array...

Solutions to convert names to numbers to implement sorting In many application scenarios, users may need to sort in groups, especially in one...

Detailed explanation of the design of SKU and SPU tables on e-commerce platforms This article will discuss the database design issues of SKU and SPU in e-commerce platforms, especially how to deal with user-defined sales...

How to set the SpringBoot project default run configuration list in Idea using IntelliJ...


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Dreamweaver Mac version
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

WebStorm Mac version
Useful JavaScript development tools