原代码:
@GetMapping("/entity/{entitySpecId}/{entityId}/{localnetId}")
public AsyncResponse getByEntity(@ApiParam(value = "entitySpecId") @PathVariable("entitySpecId") @NotBlank(message = "entitySpecId不能为空") Long entitySpecId,
@ApiParam(value = "entityId") @PathVariable("entityId") @NotBlank(message = "entityId不能为空") String entityId,
@ApiParam(value = "localnetId") @PathVariable("localnetId") @NotBlank(message = "localnetId不能为空") Long localnetId)
java 验证出现如下错误:
javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 'javax.validation.constraints.NotBlank' validating type 'java.lang.Long'. Check configuration for 'getByEntity.entitySpecId' at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getExceptionForNullValidator(ConstraintTree.java:116) ~[hibernate-validator-6.1.5.Final.jar:6.1.5.Final] at org.hibernate.validator.internal.engine.constraintvalidation.ConstraintTree.getInitializedConstraintValidator(ConstraintTree.java:162) ~[hibernate-validator-6.1.5.Final.jar:6.1.5.Final] at org.hibernate.validator.internal.engine.constraintvalidation.SimpleConstraintTree.validateConstraints
错误原因:
接收的属性是Long类型,用了NotBlank判断不能为空,而这个注解是判断字符串是否为空,改成NotNull
修改后的代码:
@GetMapping("/entity/{entitySpecId}/{entityId}/{localnetId}")
public AsyncResponse getByEntity(@ApiParam(value = "entitySpecId") @PathVariable("entitySpecId") @NotNull(message = "entitySpecId不能为空") Long entitySpecId,
@ApiParam(value = "entityId") @PathVariable("entityId") @NotBlank(message = "entityId不能为空") String entityId,
@ApiParam(value = "localnetId") @PathVariable("localnetId") @NotNull(message = "localnetId不能为空") Long localnetId)
3、解决办法
去掉@NotBlank注解、使用@NotNull