首頁>文章> Spring中使用@RequestBody註解接收的實體類別中的某些參數為null

Spring中使用@RequestBody註解接收的實體類別中的某些參數為null

DDD
DDD 原創
2024-08-13 16:14:20 1053瀏覽

本文討論Spring中如何保證@RequestBody註解的實體類別中所有參數不為空。它解釋了@RequestBody對於空參數的預設行為,並提供了幾種處理空參數的選項

Spring中使用@RequestBody註解接收的實體類別中的某些參數為null

如何在Spring中使用@RequestBody確保實體類別中的非空參數?

以確保中的所有參數使用@RequestBody註解的實體類別是非空的,您可以使用javax.validation套件中的@NotNull註解。@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 aBadRequestExceptionrrreee
  2. @NotNull註解應用於字段,Spring Validation 會自動檢查該字段是否為非空。如果為null,則會拋出 ConstraintViolationException
@RequestBody如何處理空參數? 預設情況下,@RequestBody會為實體類別中的非原始欄位綁定一個空值。例如,如果你有一個欄位以 @RequestBody註解,並且對應的請求參數為null,則實體類別中該欄位將被設定為null。 如何處理請求中部分參數為空的情況帶有@RequestBody的實體類別? 當帶有@RequestBody的實體類別中的某些參數為空時,您有多種選擇來處理這種情況:
  1. 使用預設值:您可以提供使用javax.validation套件中的@DefaultValue註解為null 欄位設定預設值。 rrreee在這種情況下,如果description請求中的參數為 null,在實體類別中會被設定為「未知」。
    1. 使用可選欄位:你可以在使用java.util套件中的Optional包裝類別的實體類別。 rrreee在這種情況下,如果description參數為null請求時,實體類別中的description欄位將被設定為Optional.empty()
      1. 自訂處理:您也可以在控制器方法中編寫自訂程式碼來處理空參數。例如,如果任何必需參數為 null,您可以拋出BadRequestException

以上是Spring中使用@RequestBody註解接收的實體類別中的某些參數為null的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn