spring-boot - @Valid for long 数据类型不适用于强制检查
问题描述
我有下面的输入类,当我在输入中触发没有'interactionId'参数的api时,我希望验证错误消息“interactionId不能为空”但验证通过我猜可能是由于interactionId有一个默认值为 0。
有人可以请。当输入中未给出“long”参数时,是否有助于对“long”参数强制执行此验证?
使用 @NotEmpty 作为 customerId 参数,它按预期工作。对长参数“interactionId”使用@NotEmpty 会引发一个不同的错误,即@notempty 不能长时间使用。
public class Input {
@NotEmpty(message = "customerId cannot be empty")
private String customerId;
@Valid
@NotNull(message = "interactionId cannot be empty")
private long interactionId;
// setters and getters
}
我的控制器类:@RestController 公共类控制器 {
@PostMapping(value="/detailed-customer-transaction", produces =
MediaType.APPLICATION_JSON_VALUE)
@ResponseBody
public ResponseEntity<Object> detailTransactions(@Valid @RequestBody Input
params)
{
return new ResponseEntity<>(Dao.detailTransactions(params), HttpStatus.OK);
}
上述问题在改为 Long 而不是 long 后得到解决。
查询 #2 我需要另一个帮助。我有一个字符串输入参数,它采用以下格式的日期时间格式。鉴于它的字符串参数,我如何验证 pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"
解决方案
long应该是Long,因为long是java中的主要类型,不是对象,所以Long是可以检查是否为null的对象
推荐阅读
- javascript - solr 过滤和 javascript 过滤
- c# - 使用 await Task.WhenAny() 忽略异常
- lambda - Racket 中是否有返回过程的 lambda 表达式的函数?
- java - onSensorChanged , 每 10 秒比较传感器数据
- java - 使用 Spring Data JPA 在数据库中保存文件路径
- c# - 如何在 PHP 中获取 C# 的 System.Text?
- flutter - pubspec.yaml 文件中 Flutter 资产中的包是什么?
- javascript - 箭头函数组件中的全局变量
- gradle - 使用 Gradle 和 JUnit 5 排除嵌套测试类
- java - 如何在 Alpine linux docker 镜像中安装 oracle jdk11?