Maison  >  Article  >  Java  >  Utiliser Java pour écrire des fonctions de pagination et de tri pour les données de formulaire

Utiliser Java pour écrire des fonctions de pagination et de tri pour les données de formulaire

王林
王林original
2023-08-10 12:33:21561parcourir

Utiliser Java pour écrire des fonctions de pagination et de tri pour les données de formulaire

Utilisez Java pour écrire les fonctions de pagination et de tri des données de formulaire

Avec le développement d'applications Web, les fonctions de pagination et de tri des données de formulaire sont devenues l'une des exigences standard de nombreuses applications. Dans cet article, nous utiliserons Java pour écrire un exemple simple démontrant comment implémenter les fonctions de pagination et de tri des données de formulaire.

Supposons que nous ayons un tableau contenant une grande quantité d'informations utilisateur. Nous souhaitons afficher ces données dans les pages d'une page Web et offrir la possibilité de trier en fonction de chaque colonne. Nous utilisons Spring Boot comme cadre de développement et moteur de modèles Thymeleaf pour générer des pages Web.

Tout d'abord, nous devons définir une classe d'entité utilisateur, qui contient le nom, l'âge, l'adresse e-mail et d'autres informations de l'utilisateur. Le code est le suivant :

public class User {
    private String name;
    private int age;
    private String email;

    // 省略getter和setter方法
}

Ensuite, nous créons une classe UserController pour gérer les requêtes liées aux utilisateurs. Dans la classe UserController, nous utilisons une collection List pour stocker les données utilisateur et initialiser cette collection dans le constructeur. Le code est le suivant :

@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"));
        // 添加更多用户数据...
    }

    // 省略其他处理请求的方法
}

Ensuite, nous devons écrire une méthode pour gérer les fonctions de pagination et de tri. Nous utiliserons les objets Pageable et Sort fournis par le framework Spring pour implémenter la pagination et le tri. Le code est le suivant :

@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";
}

Dans le code ci-dessus, nous utilisons l'annotation @RequestParam pour obtenir les paramètres de pagination et les paramètres de tri dans les paramètres de requête. Nous utilisons la méthode PageRequest.of() pour créer un objet Pageable et utilisons la méthode Sort.by() pour spécifier la colonne sur laquelle trier.

Enfin, nous utilisons la classe PageImpl pour créer un objet Page et transmettre les données utilisateur et les paramètres de pagination. Nous ajoutons ensuite des données utilisateur et des informations de pagination au modèle pour une utilisation par le moteur de modèles.

Dans la page de liste des utilisateurs, nous pouvons utiliser le moteur de modèles Thymeleaf pour générer la barre de navigation de pagination et le tableau des utilisateurs. Le code est le suivant :

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

Dans le code ci-dessus, nous utilisons l'instruction de boucle de Thymeleaf th:each pour parcourir les données utilisateur et utilisons l'attribut th:href pour générer des liens de pagination dynamiques. Nous utilisons également la directive conditionnelle de Thymeleaf th:unss pour masquer les liens "Précédent" et "Suivant" et ne pas les afficher lorsque la condition est remplie.

Enfin, nous devons ajouter certaines configurations nécessaires à la classe principale de l'application pour garantir que Spring Boot puisse gérer correctement la demande et charger notre fichier modèle. Le code est le suivant :

@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;
    }
}

Dans le code ci-dessus, nous configurons le moteur de modèle Thymeleaf en ajoutant des beans tels que viewResolver(), templateEngine() et templateResolver().

Grâce aux étapes ci-dessus, nous avons implémenté avec succès les fonctions de pagination et de tri d'écriture des données de formulaire en Java. Vous pouvez développer et optimiser davantage cet exemple en fonction des besoins réels pour l'adapter à des scénarios d'application plus complexes. J'espère que cet article pourra vous aider à comprendre et à implémenter les fonctions de pagination et de tri des données de formulaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn