0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SpringBoot_@sizeのついたパラメータにnullを渡した場合

Posted at

背景

必須ではないリクエストパラメータに対して、@Sizeを指定した場合、そのパラメータにnullを渡したらエラーになるのか気になり調べた。

1. @Sizeの動作とnullの扱い

@Sizeアノテーションは、対象となるフィールドの文字列の長さを制約しますが、nullに対しては制約を適用しません。

つまり、@Size(min=10, max=12)が付与されたフィールドにnullが渡された場合、エラーにはならず、バリデーションはスキップされます。

例:

import javax.validation.constraints.Size;

public class ExampleRequest {

    // 必須ではないが、値がある場合は最小10桁、最大12桁に制限
    @Size(min = 10, max = 12)
    private String param;

    // Getter and Setter
}

上記のコードでは、paramフィールドがnullの場合には、@Sizeのバリデーションは行われません。値がnullであることはエラーにはならず、nullは許容されます。

2. nullを許容しない場合の設定

もしnullを許容せずに、null値の場合にもエラーにしたい場合には、@NotNullアノテーションを併用します。

例:nullを許容しない

import javax.validation.constraints.NotNull;
import javax.validation.constraints.Size;

public class ExampleRequest {

    @NotNull // nullは許容しない
    @Size(min = 10, max = 12) // 最小10桁、最大12桁
    private String param;

    // Getter and Setter
}

このようにすると、paramフィールドがnullの場合にはエラーが発生し、バリデーションに失敗します。

3. 結論

  • @Size(min=10, max=12)を使用している場合、リクエストパラメータがnullであってもエラーにはなりません。null値は許容され、バリデーションはスキップされます。
  • nullをエラーとして扱いたい場合は、@NotNullを併用する必要があります。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?