Java を使用してフォーム データのページングおよびソート関数を作成する

王林
リリース: 2023-08-10 12:33:21
オリジナル
617 人が閲覧しました

Java を使用してフォーム データのページングおよびソート関数を作成する

Java を使用してフォーム データのページングおよびソート関数を作成する

Web アプリケーションの開発では、フォーム データのページングおよびソート関数が標準要件になりました。多くの用途に対応します。この記事では、Java を使用して、フォーム データのページングおよび並べ替え機能を実装する方法を示す簡単な例を作成します。

大量のユーザー情報を含むテーブルがあるとします。このデータを Web ページ上のページに表示し、各列に従って並べ替える機能を提供したいと考えています。開発フレームワークとして Spring Boot を使用し、Web ページを生成するために Thymeleaf テンプレート エンジンを使用します。

まず、ユーザーの名前、年齢、電子メール、その他の情報を含むユーザー エンティティ クラスを定義する必要があります。コードは次のとおりです。

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

    // 省略getter和setter方法
}
ログイン後にコピー

次に、ユーザー関連のリクエストを処理する UserController クラスを作成します。 UserController クラスでは、List コレクションを使用してユーザー データを保存し、コンストラクターでこのコレクションを初期化します。コードは次のとおりです。

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

    // 省略其他处理请求的方法
}
ログイン後にコピー

次に、ページングおよび並べ替え関数を処理するメソッドを作成する必要があります。 Spring フレームワークによって提供される Pageable オブジェクトと Sort オブジェクトを使用して、ページングとソートを実装します。コードは次のとおりです。

@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";
}
ログイン後にコピー

上記のコードでは、@RequestParam アノテーションを使用して、リクエスト パラメーター内のページング パラメーターとソート パラメーターを取得します。 PageRequest.of() メソッドを使用して Pageable オブジェクトを作成し、Sort.by() メソッドを使用して並べ替えの基準となる列を指定します。

最後に、PageImpl クラスを使用して Page オブジェクトを作成し、ユーザー データとページング パラメーターを渡します。次に、テンプレート エンジンで使用できるように、ユーザー データとページネーション情報をモデルに追加します。

ユーザー リスト ページでは、Thymeleaf テンプレート エンジンを使用してページング ナビゲーション バーとユーザー テーブルを生成できます。コードは次のとおりです。

<!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>
ログイン後にコピー

上記のコードでは、Thymeleaf のループ命令 th:each を使用してユーザー データを走査し、th:href 属性を使用して動的ページング リンクを生成します。また、Thymeleaf の条件ディレクティブ th:unless を使用して、「前へ」と「次へ」リンクを非表示にし、条件が満たされたときにそれらを表示しないようにします。

最後に、Spring Boot がリクエストを正しく処理してテンプレート ファイルをロードできるようにするために、アプリケーションのメイン クラスに必要な構成を追加する必要があります。コードは次のとおりです。

@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;
    }
}
ログイン後にコピー

上記のコードでは、viewResolver()、templateEngine()、templateResolver() などの Bean を追加して、Thymeleaf テンプレート エンジンを構成します。

上記の手順により、Java でフォーム データを記述する際のページングとソート機能を実装することができました。実際のニーズに応じてこの例をさらに拡張および最適化し、より複雑なアプリケーション シナリオに適応させることができます。この記事が、フォーム データのページング機能と並べ替え機能の理解と実装に役立つことを願っています。

以上がJava を使用してフォーム データのページングおよびソート関数を作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート