Java 正在验证@RequestBody布尔属性(为真或假)
所以我读了很多主题,但没有在任何一个主题中找到这些信息。如果有机会我错过了它,如果你能指引我去看它,我将不胜感激:) 我正在使用SringBoot,得到了一个用户模型,它有一个Java 正在验证@RequestBody布尔属性(为真或假),java,spring,validation,boolean,Java,Spring,Validation,Boolean,所以我读了很多主题,但没有在任何一个主题中找到这些信息。如果有机会我错过了它,如果你能指引我去看它,我将不胜感激:) 我正在使用SringBoot,得到了一个用户模型,它有一个booleanfield-active。我之所以使用布尔值,是因为我了解到,使用布尔值进行3次状态检查是一种不好的做法 问题是,当我从Postman发送RequestBody时,如果我将字段保持为空,它将默认为false。我读过一些关于@NotNull注释和@Validation以及@Valid检查Body的内容,但这不是
boolean
field-active。我之所以使用布尔值
,是因为我了解到,使用布尔值
进行3次状态检查是一种不好的做法
问题是,当我从Postman发送RequestBody时,如果我将字段保持为空,它将默认为false。我读过一些关于@NotNull
注释和@Validation
以及@Valid
检查Body的内容,但这不是布尔值的选项
主要问题:是否可以对布尔属性执行类似(@AssertTrue
或@AssertFalse
)的操作?如果不是,那么如何确保该属性在RequestBody中不为空(不使用布尔值)
编辑:我只是认为这个问题可能不需要代码,因为它非常简单,给你,控制器方法:
@PutMapping()
@PreAuthorize("hasRole('ADMIN')")
public ResponseEntity<User> modifyUser(@RequestBody User userBody)
throws NotFoundException {
布尔数据类型是二进制表示(true/false)。Null值既不是true也不是false
默认情况下,布尔值为false。
参考文献
如果要基于发送的用户数据执行一些验证,则必须将数据类型创建为包装布尔值。
这将取决于你将要解释的情景
如果为空,您将计算一些值并设置字段吗
是否要在数据库中将该值存储为null
但理想情况下,如果一个字段是布尔值,则该值应为true或false。因此在最终结果中,我仍然必须使用布尔值,因此我能够向活动字段添加@NotNull注释。遗憾的是,仍然无法找到关于如何使用布尔运算的答案。。。谢谢你的回复 也许你也应该分享你的代码,这样我们可以更好更容易地帮助你1。如果为null,我希望将其设置为原样(编辑前的旧值),但不将其设置为false(就像现在一样)2。数据库中的值不能为空。我需要用户是活跃的或不活跃的,完美的做法是只限制没有该属性的RequestBody
@Column(name = "ACTIVE")
private boolean active;