java - 在 Spring 控制器中重用具有不同验证模式的表单数据类
问题描述
我想使用具有两个不同控制器但具有不同验证模式的相同表单数据类。
我有类和控制器:
public class Query {
@Pattern(regexp = "") //different pattern for askHim and askMe
private String name;
}
@Controller
public class TestController {
@PostMapping(value = "/api/askHim.html")
public void askHim(@Valid @RequestBody Query q) {
//do something
}
@PostMapping(value = "/api/askMe.html")
public void askMe(@Valid @RequestBody Query q) {
//do something
}
}
如何为 askHim 方法和 askMe 方法使用同一个类的不同模式?
解决方案
我已经知道了。我们需要在验证中使用组并将@Valid 替换为@Validated。
public interface AskMe { }
public interface AskHim { }
public class Query {
@Pattern(regexp = "name", groups = { AskMe.class })
@Pattern(regexp = "age", groups = { AskHim.class })
private String name;
}
@Controller
public class TestController {
@PostMapping(value = "/api/askHim.html")
public void askHim(@Validated({ AskHim.class }) @RequestBody Query q) {
//do something
}
@PostMapping(value = "/api/askMe.html")
public void askMe(@Validated({ AskMe.class }) @RequestBody Query q) {
//do something
}
}
推荐阅读
- php - 通过 Vimeo 包上传我的视频会影响我的服务器吗?
- c++ - 声明类成员
- mysql - 如何在 mysql 数据库中存储 rrweb-io 事件
- jquery - 2 col-md-6 在我的剑道网格细节模板中没有并排排列
- python-3.x - 无法将 dtype 从 object 转换为 str
- javascript - MongoDB:更新后返回修改后的文档会影响性能吗?
- node.js - 如何更改网站主题并保存此主题,使其在重新加载时不会更改?
- javascript - 返回所有排列的 JavaScript 函数
- python-3.x - 没有为 intel-numpy 找到匹配的分布
- arrays - 从数组中删除重复项,但按频率排序