java - 如何在 Spring Boot 中使用 @Valid 验证对象?
问题描述
我正在开发一个 Spring Boot 项目,并且正在尝试验证对象中的某些字段。
实际上我有一个接受参数的 API。我知道我可以@Valid
像这样使用 API 声明:
@GetMapping(value="/...")
Object myMethod(@RequestParam(value="name") @Size(min = 3) String name)
但我不想在那里验证。我有一个“过滤器”对象来验证这些值,所以我期望类似:
控制器文件
@override
public Object myMethod(String name){
@Valid Filter filter = new Filter(name)
}
而且 filter 不是一个实体,只是一个带有验证标签的类:
public class Filter
@Size(min = 3)
private String name;
public Filter(name){
this.name = name;
}
// getters and setters
所以这个想法是使用@Valid
创建对象并在任何验证不成功时抛出异常。这可能吗?
我找到了多种解决方案来验证查询参数、正文请求等,但不是关于验证使用new
.
解决方案
据我所知,这是不可能的。最接近您的案例的解决方案是手动验证实体:
@Autowired
private Validator validator;
然后像这样验证你的对象:
@Override
public Object myMethod(String name){
Filter filter = new Filter(name);
validator.validate(filter);
}
推荐阅读
- javascript - 按钮上的 React onBlur 事件在 Safari 中不起作用
- jquery - 如何在 $.post 中隐藏表单操作或 URL
- sql - 在选择中:仅当大于 0 时才显示值
- faunadb - 如何创建具有实例的索引?
- python-sphinx - reStructuredText 长节标题
- sql - 选择所有订单中价格最高的客户
- c - $1 在 yacc 中是什么意思,我怎样才能得到它的价值
- c++ - 在 CLI 中抛出 std::exception 会引发访问冲突
- php - PHP 提供 Roudcube 的 index.php 作为下载
- reactjs - React 高阶组件警告