java - 如何验证由 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();
}
解决方案
您需要使用 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();
}
推荐阅读
- angular - Angular - 如何从一个输入跳到另一个?
- python - 在ndarray python中将数据添加到新创建的轴
- php - 关于 PHP 中的 strpos
- excel - 将集合添加为 excel 验证
- python-3.x - 在 seaborn 联合图上设置边缘颜色
- reactjs - React 中 Forge 查看器的最小实现
- php - PHP-FPM 错误 - 不断收到“致命错误:允许的内存大小为 268435456 字节已用尽(尝试分配 107374182448 字节)”
- ember.js - Ember cli 分页 - 无法接收模型?
- python - 在向量场上变换一个 numpy 矩阵
- javascript - 使用 JSON.stringify 将所有内容存储在 localstorage 上