本文讨论Spring中如何保证@RequestBody注解的实体类中所有参数不为空。它解释了@RequestBody对于空参数的默认行为,并提供了几种处理空参数的选项
以确保中的所有参数使用@RequestBody注解的实体类是非空的,您可以使用javax.validation
包中的@NotNull
注解。@NotNull
annotation from thejavax.validation
package.
import javax.validation.constraints.NotNull; public class MyEntity { @NotNull private String name; // Other fields }
When the@NotNull
annotation is applied to a field, Spring Validation will automatically check if the field is non-null. If it is null, aConstraintViolationException
will be thrown.
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.
You have several options to handle the situation when some parameters in an entity class with @RequestBody are null:
@DefaultValue
annotation from thejavax.validation
package.import javax.validation.constraints.DefaultValue; public class MyEntity { @RequestBody private String name; @DefaultValue("unknown") private String description; // Other fields }
In this case, if thedescription
parameter is null in the request, it will be set to "unknown" in the entity class.
Optional
wrapper class from thejava.util
package.import java.util.Optional; public class MyEntity { @RequestBody private String name; private Optional description; // Other fields }
In this case, if thedescription
parameter is null in the request, thedescription
field in the entity class will be set toOptional.empty()
.
BadRequestException
rrreee@NotNull
注解应用于字段,Spring Validation 会自动检查该字段是否为非空。如果为null,则会抛出
ConstraintViolationException
。
@RequestBody
注解,并且对应的请求参数为null,则实体类中该字段将被设置为null。如何处理请求中部分参数为空的情况带有@RequestBody的实体类?当带有@RequestBody的实体类中的某些参数为空时,您有多种选择来处理这种情况:
javax.validation
包中的@DefaultValue
注解为 null 字段设置默认值。rrreee在这种情况下,如果description
请求中的参数为 null,在实体类中会被设置为“未知”。
java.util
包中的Optional
包装类的实体类。rrreee在这种情况下,如果description
参数为 null请求时,实体类中的description
字段将被设置为Optional.empty()
。
BadRequestException
。以上是Spring中使用@RequestBody注解接收的实体类中的某些参数为null的详细内容。更多信息请关注PHP中文网其他相关文章!