カテゴリ: Spring 更新日: 2025/11/02

JavaのSpringで使う@Lengthアノテーション入門ガイド!初心者でもわかる入力チェック

Springの@Lengthアノテーション
Springの@Lengthアノテーション

先生と生徒の会話形式で理解しよう

生徒

「Springで文字列の長さを制限してチェックする方法はありますか?」

先生

「はい、@Lengthアノテーションを使えば、文字列の最小長さや最大長さを簡単に指定できますよ。」

生徒

「例えばパスワードが8文字以上でないとダメ、というルールも書けますか?」

先生

「もちろん可能です。実際のコード例を一緒に見ていきましょう。」

1. @Lengthアノテーションとは?

1. @Lengthアノテーションとは?
1. @Lengthアノテーションとは?

@Lengthアノテーションは、Hibernate Validatorが提供している文字列専用のバリデーションアノテーションです。JavaのSpringアプリケーションでフォーム入力をチェックするときによく使われ、文字列が一定の範囲の長さに収まっているかどうかを検証します。例えば「ユーザー名は3文字以上50文字以下」といったルールを簡単に定義できます。

2. @Lengthアノテーションの基本的な使い方

2. @Lengthアノテーションの基本的な使い方
2. @Lengthアノテーションの基本的な使い方

実際のコードでは、DTOやエンティティのフィールドに@Lengthを付与して使います。以下のサンプルはユーザー名を検証する例です。


import org.hibernate.validator.constraints.Length;
import jakarta.validation.constraints.NotBlank;

public class UserForm {

    @NotBlank(message = "ユーザー名は必須です")
    @Length(min = 3, max = 50, message = "ユーザー名は3文字以上50文字以内で入力してください")
    private String username;

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }
}

この例では必須入力の@NotBlankと組み合わせることで、空入力も防止しつつ長さ制限を行っています。

3. @Lengthと@Sizeの違い

3. @Lengthと@Sizeの違い
3. @Lengthと@Sizeの違い

@Lengthとよく似たアノテーションに@Sizeがあります。@Sizeはコレクションや配列にも利用できますが、@Lengthは文字列専用です。そのため、文字列に特化したバリデーションを書くときには@Lengthを使う方がわかりやすくなります。

4. Spring MVCでのバリデーション処理

4. Spring MVCでのバリデーション処理
4. Spring MVCでのバリデーション処理

Spring MVCのコントローラで@ValidとBindingResultを利用すれば、@Lengthによるチェックは自動的に行われます。以下は入力フォームの検証例です。


import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import jakarta.validation.Valid;

@Controller
public class UserController {

    @GetMapping("/user")
    public String showForm(UserForm userForm) {
        return "userForm";
    }

    @PostMapping("/user")
    public String submitForm(@Valid UserForm userForm, BindingResult bindingResult, Model model) {
        if (bindingResult.hasErrors()) {
            return "userForm";
        }
        model.addAttribute("username", userForm.getUsername());
        return "success";
    }
}

このように記述すれば、エラー時には自動的にエラーメッセージが処理されます。

5. エラーメッセージのカスタマイズ

5. エラーメッセージのカスタマイズ
5. エラーメッセージのカスタマイズ

@Lengthアノテーションではmessage属性を指定することで、わかりやすい日本語メッセージを表示できます。初心者向けには「〇文字以上〇文字以内で入力してください」と具体的に伝えるのがおすすめです。


@Length(min = 8, max = 20, message = "パスワードは8文字以上20文字以内で入力してください")
private String password;

6. 入力チェックの実用例

6. 入力チェックの実用例
6. 入力チェックの実用例

実際のアプリケーションでは、ユーザー登録フォームやブログ記事のタイトル入力などさまざまな場面で@Lengthが使われます。以下のように複数フィールドに適用してバリデーションを強化できます。


@Length(min = 5, max = 100, message = "タイトルは5文字以上100文字以内で入力してください")
private String title;

@Length(min = 10, max = 1000, message = "本文は10文字以上1000文字以内で入力してください")
private String content;

7. HTMLフォームとの連携

7. HTMLフォームとの連携
7. HTMLフォームとの連携

HTMLフォームの入力欄にmaxlengthを設定しておくと、フロントエンドでも入力制限をかけられます。これをSpringの@Lengthと併用すれば、より安全で使いやすいフォームが作れます。


<form action="/user" method="post">
    <label for="username">ユーザー名</label>
    <input type="text" id="username" name="username" maxlength="50" required />
    <button type="submit">送信</button>
</form>

8. 初心者が理解しておきたいポイント

8. 初心者が理解しておきたいポイント
8. 初心者が理解しておきたいポイント

初心者がSpringの@Lengthアノテーションを使う際に押さえておきたいポイントは以下の通りです。

  • 文字列の長さ制限に特化したバリデーション
  • @NotBlankと組み合わせて必須入力もチェック
  • @Sizeとの違いを理解して使い分ける
  • エラーメッセージはわかりやすい日本語にカスタマイズする
  • フロントエンドとサーバーサイドで二重チェックを行うと安心

これらを理解すれば、実際の開発現場でも@Lengthを活用して安全で信頼性の高い入力フォームを実装できます。

カテゴリの一覧へ
新着記事
Javaのラムダ式で戻り値とvoidの使い方を解説!returnの書き方も完全理解
Javaのメソッド参照とコンストラクタ参照の使い方を完全ガイド!初心者向けに::とClass::newを解説
Javaのラムダ式の書き方を徹底解説!アロー演算子->の基本と使い方
Thymeleafのth:eachの使い方!ループ回数やindexなどの繰り返し処理を学ぼう
人気記事
No.1
Java&Spring記事人気No1
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.2
Java&Spring記事人気No2
Spring Boot JPA入門:エンティティ/リポジトリの基本と作り方
No.3
Java&Spring記事人気No3
Javaの@Validアノテーションを徹底解説!初心者でもわかる入力値検証の基本
No.4
Java&Spring記事人気No4
Springの@Repositoryアノテーションの使い方を徹底解説!初心者でもわかるSpringフレームワークのデータアクセス