Home  >  Article  >  Java  >  Use Java to write paging and sorting functions for form data

Use Java to write paging and sorting functions for form data

王林
王林Original
2023-08-10 12:33:21561browse

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>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!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn