我有这样的代码:
Controller
public String doStuff(@Valid @RequestBody MyClass obj, BindingResult result) {
...
}
验证
@InitBinder
public void initBinder(WebDataBinder binder, HttpServletRequest request) {
binder.setValidator(new MyValidator());
}
问题是我不知道如何将 obj
参数与我需要运行以自动验证 的特定
与我的自定义 validator 类。我需要一些方法让特定的 initBinder
方法“ Hook ” obj@InitBinder
方法在 obj
参数绑定(bind)到请求正文后运行。
此外,我必须使用 @RequestBody
,因为 Controller 方法在请求正文中接收 JSON 负载。
最佳答案
我认为将 @InitBinder
方法与 doStuff()
方法放在同一个 Controller 类中就足够了。
或者,您也可以为 MyValidator
创建一个自定义注解,并将其应用于 MyClass
中的类级别,而不是使用 @InitBinder
。这还有一个额外的好处,即在参数之一为 @Valid MyClass obj
的任何 方法调用上启动和运行。
关于java - 如何将@requestBody 映射到特定的initBinder 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45599941/