ホームページ  >  記事  >  Spring で @RequestBody アノテーションを使用して受信したエンティティ クラスの一部のパラメーターが null です

Spring で @RequestBody アノテーションを使用して受信したエンティティ クラスの一部のパラメーターが null です

DDD
DDDオリジナル
2024-08-13 16:14:201170ブラウズ

この記事では、Spring で @RequestBody アノテーションが付けられたエンティティ クラスのすべてのパラメーターが null でないことを確認する方法について説明します。 null パラメーターに対する @RequestBody のデフォルトの動作について説明し、null パラメーターを処理するためのいくつかのオプションを提供します

Spring で @RequestBody アノテーションを使用して受信したエンティティ クラスの一部のパラメーターが null です

Spring で @RequestBody を使用してエンティティ クラスの非 Null パラメーターを確認する方法

@RequestBody アノテーションが付けられたエンティティ クラスが null でない場合は、javax.validation パッケージの @NotNull アノテーションを使用できます。 アノテーションがフィールドに適用されると、Spring Validation はフィールドが null でないかどうかを自動的にチェックします。 null の場合、ConstraintViolationException がスローされます。@NotNull annotation from the javax.validation package.

<code class="java">import javax.validation.constraints.NotNull;

public class MyEntity {
    @NotNull
    private String name;
    // Other fields
}</code>

When the @NotNull annotation is applied to a field, Spring Validation will automatically check if the field is non-null. If it is null, a ConstraintViolationException will be thrown.

How Does @RequestBody Handle Null Parameters?

By default, @RequestBody will bind a null value to a non-primitive field in the entity class. For example, if you have a field annotated with @RequestBody and the corresponding request parameter is null, the field will be set to null in the entity class.

How to Handle Null Parameters in Part of an Entity Class with @RequestBody?

You have several options to handle the situation when some parameters in an entity class with @RequestBody are null:

  1. Use default values: You can provide default values for null fields by using the @DefaultValue annotation from the javax.validation package.
<code class="java">import javax.validation.constraints.DefaultValue;

public class MyEntity {
    @RequestBody
    private String name;
    @DefaultValue("unknown")
    private String description;
    // Other fields
}</code>

In this case, if the description parameter is null in the request, it will be set to "unknown" in the entity class.

  1. Use optional fields: You can declare optional fields in the entity class using the Optional wrapper class from the java.util package.
<code class="java">import java.util.Optional;

public class MyEntity {
    @RequestBody
    private String name;
    private Optional<String> description;
    // Other fields
}</code>

In this case, if the description parameter is null in the request, the description field in the entity class will be set to Optional.empty().

  1. Custom handling: You can also write custom code in the controller method to handle null parameters. For example, you could throw a BadRequestException
  2. @RequestBody は Null パラメータをどのように処理しますか?
🎜 デフォルトでは、@RequestBody はエンティティ クラスの非プリミティブ フィールドに null 値をバインドします。 。たとえば、@RequestBody の注釈が付けられたフィールドがあり、対応するリクエスト パラメーターが null の場合、そのフィールドはエンティティ クラスで null に設定されます。 @RequestBody を使用したエンティティ クラス?🎜🎜@RequestBody を使用したエンティティ クラスの一部のパラメーターが null の場合に状況を処理するためのオプションがいくつかあります:🎜
  1. デフォルト値を使用: javax.validation パッケージの @DefaultValue アノテーションを使用して、null フィールドのデフォルト値を設定します。🎜🎜rrreee🎜この場合、descriptionパラメータがリクエストで null の場合、エンティティ クラスで「unknown」に設定されます。🎜
    1. オプションのフィールドを使用する: オプションのフィールドをjava.util パッケージの Optional ラッパー クラスを使用するエンティティ クラス。🎜🎜rrreee🎜 この場合、description パラメーターが null の場合、リクエストでは、エンティティ クラスの description フィールドが Optional.empty() に設定されます。🎜
      1. カスタム処理: コントローラー メソッドにカスタム コードを記述して、null パラメーターを処理することもできます。たとえば、必須パラメータのいずれかが null の場合、BadRequestException をスローできます。

以上がSpring で @RequestBody アノテーションを使用して受信したエンティティ クラスの一部のパラメーターが null ですの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。