Java 我无法获得有关AngularJS中验证错误的信息
我有一个html表单,其中包含一些需要验证的字段(姓名、地址、电子邮件等)。它是有效的,但我无法将有关验证错误的信息从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
@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]