Maison> Problème commun> le corps du texte

Certains paramètres de la classe d'entité reçus à l'aide de l'annotation @RequestBody au Spring sont nuls

DDD
Libérer: 2024-08-13 16:14:20
original
1007 Les gens l'ont consulté

Cet article explique comment garantir que tous les paramètres d'une classe d'entité annotée avec @RequestBody ne sont pas nuls au Spring. Il explique le comportement par défaut de @RequestBody pour les paramètres nuls et propose plusieurs options pour gérer les paramètres nuls

Certains paramètres de la classe d'entité reçus à l'aide de l'annotation @RequestBody au Spring sont nuls

Comment garantir les paramètres non nuls dans une classe d'entité avec @RequestBody au printemps ?

Pour garantir que tous les paramètres de une classe d'entité annotée avec @RequestBody n'est pas nulle, vous pouvez utiliser l'annotation@NotNulldu packagejavax.validation.@NotNullannotation from thejavax.validationpackage.

import javax.validation.constraints.NotNull; public class MyEntity { @NotNull private String name; // Other fields }
Copier après la connexion

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 }
Copier après la connexion

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 }
Copier après la connexion

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. Lorsque le @NotNullest appliquée à un champ, Spring Validation vérifiera automatiquement si le champ n'est pas nul. S'il est nul, une ConstraintViolationExceptionsera levée.
Comment @RequestBody gère-t-il les paramètres nuls ?Par défaut, @RequestBody liera une valeur nulle à un champ non primitif dans la classe d'entité. . Par exemple, si vous avez un champ annoté avec @RequestBodyet que le paramètre de requête correspondant est nul, le champ sera défini sur null dans la classe d'entité.Comment gérer les paramètres nuls dans une partie d'un Classe d'entité avec @RequestBody ?Vous disposez de plusieurs options pour gérer la situation lorsque certains paramètres d'une classe d'entité avec @RequestBody sont nuls :
  1. Utiliser les valeurs par défaut :Vous pouvez fournir valeurs par défaut pour les champs nuls en utilisant l'annotation@DefaultValuedu packagejavax.validation.rrreeeDans ce cas, si ladescriptionest nul dans la requête, il sera défini sur "inconnu" dans la classe d'entité.
    1. Utiliser les champs facultatifs :Vous pouvez déclarer des champs facultatifs dans le classe d'entité utilisant la classe wrapperFacultatifdu packagejava.util.rrreeeDans ce cas, si le paramètredescriptionest nul dans la requête, le champdescriptiondans la classe d'entité sera défini surOptional.empty().
      1. Personnalisé manipulation :Vous pouvez également écrire du code personnalisé dans la méthode du contrôleur pour gérer les paramètres nuls. Par exemple, vous pouvez lancer uneBadRequestExceptionsi l'un des paramètres requis est nul.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!