首页 > 解决方案 > 如何验证由 Spring Data 填充的控制器输入中的域对象?

问题描述

例如我有:

@PostMapping("/person/{id}")
@ResponseBody
public boolean isAdmin(@PathVariable("id") Person person) {
  return person != null && person.isAdmin();
}

如何使用验证获得相同的结果?
这对我不起作用,但我会查找类似的东西,而无需手动检查方法体。有没有办法这样做?

@PostMapping("/person/{id}")
@ResponseBody
public boolean isAdmin(@PathVariable("id") @NotNull Person person) {
  return person.isAdmin();
}

标签: javaspringvalidationspring-mvcspring-data-jpa

解决方案


您需要使用 javax.validation.Valid 并向您的 Person pojo 添加约束: javax.validation.constraints.Email/NotBlank/NotNull;

public class Person {

    @NotNull
    private Long id;
    /* here getters and setters...*/
}

在您的控制器中:

@PostMapping("/person/{id}")
@ResponseBody
public boolean isAdmin(@Valid @RequestBody Person person) {
  return person.isAdmin();
}

看我的github


推荐阅读