Java 我无法获得有关AngularJS中验证错误的信息

Java 我无法获得有关AngularJS中验证错误的信息,java,angularjs,spring-boot,validation,spring-mvc,Java,Angularjs,Spring Boot,Validation,Spring Mvc,我有一个html表单,其中包含一些需要验证的字段(姓名、地址、电子邮件等)。它是有效的,但我无法将有关验证错误的信息从@PostMapping方法传递给AngularJS。响应为空。我做错了什么 java-控制器类 @Controller public class Store { @PostMapping("/save") public ResponseEntity<Object> getShippingInfo(@Valid @Re

我有一个html表单,其中包含一些需要验证的字段(姓名、地址、电子邮件等)。它是有效的,但我无法将有关验证错误的信息从
@PostMapping
方法传递给AngularJS。响应为空。我做错了什么

java-控制器类

    @Controller
    public class Store {

        @PostMapping("/save")
        public ResponseEntity<Object> getShippingInfo(@Valid @RequestBody final User user,
                final BindingResult bindingResult) {

            Store.LOGGER.info("{}", user);

            if (bindingResult.hasErrors()) {
                Store.LOGGER.info("{}", "Validation failed");
                final List<String> errors = bindingResult.getAllErrors().stream()
                        .map(DefaultMessageSourceResolvable::getDefaultMessage)
                        .collect(Collectors.toList());

                return new ResponseEntity<>(errors, HttpStatus.OK);
            } else {
                Store.LOGGER.info("{}", "Validation successed");
            }
            return new ResponseEntity<>(HttpStatus.CREATED);
        }
    }
因此,这里我在浏览器控制台中从
$scope.postResultMessage
输出的内容是空的,而从
Store.LOGGER.info(“{}”,errors)输出的内容是空的我按预期进入Eclipse控制台:

[size must be between 7 and 10, invalid credit card number]

更新1

如果我试图将响应输出到浏览器控制台,我会得到以下结果:

问题可能是您返回的错误带有HTTP状态代码200。这意味着不执行前端错误块(前端假定一切正常)。例如,您应该将HTTP状态代码设置为Bad Request。

仅当您发送状态代码为
=400的HTTP状态时,“错误”绑定函数才会触发。您是否尝试过用其他内容替换您的
HttpStatus.OK
?可能是“错误请求”?看起来我有响应,但没有错误信息。我更新了我的帖子。我刚刚尝试了HttpStatus.BAD_请求,但它也不起作用。您没有发回text/plain,而是说
Accept:text/plain
。我猜您正在发回一个JSON数组。因此,也许可以将前端配置更改为
Accept:application/json
。这与HttpStatus.BAD_请求相结合。HTTP406基本上表示内容类型协商失败。看起来我有响应,但没有错误信息。我更新了我的帖子。我只是尝试了HttpStatus.BAD_请求,但它也不起作用。
[size must be between 7 and 10, invalid credit card number]