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

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

DDD
DDDoriginal
2024-08-13 16:14:201244parcourir

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 @NotNull du package javax.validation.@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 BadRequestExceptionrrreee
  2. Lorsque le @NotNull est appliquée à un champ, Spring Validation vérifiera automatiquement si le champ n'est pas nul. S'il est nul, une ConstraintViolationException sera 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 @RequestBody et 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 @DefaultValue du package javax.validation.🎜🎜rrreee🎜Dans ce cas, si la description est 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 wrapper Facultatif du package java.util.🎜🎜rrreee🎜Dans ce cas, si le paramètre description est nul dans la requête, le champ description dans la classe d'entité sera défini sur Optional.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 une BadRequestException si 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!

Déclaration:
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