问题描述
我们使用 Spring boot 的 Hibernate Bean 验证来验证我的控制器的输入请求值,其中包含字符串列表。我们使用正则表达式来验证列表中的每个字符串。 RegEx 有效,但即使列表包含多个无效值,它也只返回一个 FieldError。
Sub Copyvalue()
' create variable with candidate output range
dim dest as range
set dest = Sheets("5S Performance").Range("B39")
' if dest already has a value then re-set dest to a different location
' make whatever modification you want here - I am just suggesting end down
if not isempty(dest.value) then
if not isempty(dest.offset(1,0).value) then set dest = dest.end(xlDown)
endif
set dest=dest.offset(1,0)
Sheets("Score Card").Range("E36").Copy Destination:=dest
End Sub
我在控制器的异常处理程序中捕获了验证错误:
class MyIncomingRequest {
@Schema(example = "[\"3FA6P0H71HR224953\"]")
@NotEmpty(message = "Vin cannot be empty")
private List<@Valid @Size(min=17,max=17) @Pattern(regexp = someRegEx) String> vins;
}
class MyResponse {
List<String> errors = new ArrayList<>();
}
问题是我们永远不会看到一个以上的 FieldError,即使我们使用包含多个无效输入字符串的输入 JSON 进行测试也是如此。例如,假设以下两个值无效:
@ExceptionHandler
public ResponseEntity<MyResponse> handleException(MethodArgumentNotValidException e) {
MyResponse response = new MyResponse();
for (FieldError fieldError : e.getBindingResult().getFieldErrors()) {
errors.add(fieldError.getDefaultMessage();
}
}
对于第一个输入值,我们会得到一个 FieldError,但不会同时出现。为什么是这样?我见过几个循环遍历所有 FieldError 的代码示例,因此我假设可以对传入列表的每个元素执行验证。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)