java - 如何在 Spring 框架前端接收验证消息?

标签 java spring validation

我有验证限制:

 @Size(min = 3, message = "First name '${validatedValue} must be minimum 3 characters long'")
    @Pattern(regexp = "^A(\\w)+$", message = "First name must start with capital letter")
    private String firstName;

在 Controller 中,我为请求正文参数添加了 @Valid 注释。 如果验证失败 - Spring 会解决此问题,但我没有收到消息。 为什么会发生这种情况?

我尝试添加此处理程序:

    @ExceptionHandler(ConstraintViolationException.class)
    public ResponseEntity<String> handle(ConstraintViolationException constraintViolationException) {
        Set<ConstraintViolation<?>> violations = constraintViolationException.getConstraintViolations();
        String errorMessage = "";
        if (!violations.isEmpty()) {
           ...
        } else {
            errorMessage = "ConstraintViolationException occured.";
        }

        return new ResponseEntity<>(errorMessage, HttpStatus.BAD_REQUEST);
    }

最佳答案

我想,通过获取字段错误是可能的。

希望下面的示例能够成功

@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<ResponseBuilder> handleMethodArgumentNotValidException(HttpServletRequest request,
            MethodArgumentNotValidException ex) {

    BindingResult result = ex.getBindingResult();
    List<org.springframework.validation.FieldError> fieldErrors = result.getFieldErrors();
    String errorMessage = messageSource.getMessage(ApiResponseCode.ERR_COMMON_REQ_BODY.getCode(),
                new Object[] {
                        fieldErrors.stream().map(field -> field.getDefaultMessage()).collect(Collectors.joining(",")) },
                Locale.US);
    LOGGER.error(errorMessage, ex);
    return new ResponseEntity<ResponseBuilder>(
                new ResponseBuilder.Builder(ApiResponseCode.ERR_COMMON_REQ_BODY.getCode(), errorMessage).build(),
                HttpStatus.OK);
    }

关于java - 如何在 Spring 框架前端接收验证消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60697917/

相关文章:

ruby 中的 Java 流等效?

java - 从Eclipse的更深层文件夹执行Gradle构建

java - 如何使用 JAVA 从 gerrit REST API 获取 commitMessage

java - 当多个端点映射到同一路径时Spring MVC默认MIME类型

javascript - 输入数字验证 - 限制仅输入数字或数字,int 和 float 两者

java - 困难的 JAXB 映射

spring - Zuul Ribbon 异常总是返回 500 响应

java - 如何保证事务服务方法中的行级唯一约束?

javascript - 使用 Javascript 验证日期输入

php - 用户物理位置的最佳实践(输入、数据类型、显示和验证)