问题描述
所以我读了很多主题,但是没有在任何主题中找到此信息。如果有机会我错过了它,如果您能指导我:),我将不胜感激。
我正在使用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
如果要基于发送的用户数据进行一些验证,则必须将数据类型创建为包装布尔值。 这将取决于您所要解释的情况。
- 如果为null,您将计算一些值并设置该字段吗?
- 您要在数据库中将值存储为null吗?
但是理想情况下,如果字段为布尔值,则该值应该为true或false。
,因此,在最终结果中,我仍然必须使用布尔值,因此可以将@NotNull注释添加到活动字段。可悲的是,仍然无法找到有关如何使用布尔值的答案……感谢您的答复!