验证@RequestBody布尔属性为true或false

问题描述

所以我读了很多主题,但是没有在任何主题中找到此信息。如果有机会我错过了它,如果您能指导我:),我将不胜感激。

我正在使用SringBoot并获得一个用户模型,该模型具有一个boolean字段-有效。我使用boolean是因为我读到Boolean用于3个状态检查是一种不好的做法。

问题在于,当我从邮递员发送RequestBody时,如果我将该字段保留为空,则默认为false。我读到了类似@NotNull的注解,其中@Validation@Valid在Body上进行了检查,但这不是布尔选项。

主要问题:是否可以对布尔属性执行类似(@AssertTrue@AssertFalse)的操作?否则,如何确保在RequestBody中此属性不为空(不使用Boolean)?

编辑:我只是认为代码对于这个问题可能不是必需的,因为它很简单,在这里,控制器方法:

@PutMapping()
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<User> modifyUser(@RequestBody User userBody)
        throws NotFoundException {

用户类属性:

    @Column(name = "ACTIVE")
private boolean active;

解决方法

布尔数据类型是二进制表示形式(真/假)。空值既不是true也不是false。

默认情况下,布尔值是false。 参考Primitive Data Types

如果要基于发送的用户数据进行一些验证,则必须将数据类型创建为包装布尔值。 这将取决于您所要解释的情况。

  1. 如果为null,您将计算一些值并设置该字段吗?
  2. 您要在数据库中将值存储为null吗?

但是理想情况下,如果字段为布尔值,则该值应该为true或false。

,

因此,在最终结果中,我仍然必须使用布尔值,因此可以将@NotNull注释添加到活动字段。可悲的是,仍然无法找到有关如何使用布尔值的答案……感谢您的答复!

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...