我想使用具有两个差异控制器但具有不同验证模式的相同表单数据类。
我有班级和控制员:
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方法?
答案 0 :(得分:0)
我已经知道了。我们需要在验证中使用组,并将@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
}
}