首页 > 解决方案 > @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'"

标签: spring-boot

解决方案


long应该是Long,因为long是java中的主要类型,不是对象,所以Long是可以检查是否为null的对象


推荐阅读