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

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

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

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

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

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

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

import javax.validation.constraints.NotNull; public class MyEntity { @NotNull private String name; // Other fields }

When the@NotNullannotation is applied to a field, Spring Validation will automatically check if the field is non-null. If it is null, aConstraintViolationExceptionwill 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@RequestBodyand 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@DefaultValueannotation from thejavax.validationpackage.
import javax.validation.constraints.DefaultValue; public class MyEntity { @RequestBody private String name; @DefaultValue("unknown") private String description; // Other fields }

In this case, if thedescriptionparameter 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 theOptionalwrapper class from thejava.utilpackage.
import java.util.Optional; public class MyEntity { @RequestBody private String name; private Optional description; // Other fields }

In this case, if thedescriptionparameter is null in the request, thedescriptionfield in the entity class will be set toOptional.empty().

  1. Custom handling:You can also write custom code in the controller method to handle null parameters. For example, you could throw aBadRequestException
  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 までご連絡ください。