java - 如何将@requestBody 映射到特定的initBinder 方法?

标签 java spring spring-mvc

我有这样的代码:

Controller

public String doStuff(@Valid @RequestBody MyClass obj, BindingResult result) {
  ... 
}

验证

@InitBinder
public void initBinder(WebDataBinder binder, HttpServletRequest request) {
  binder.setValidator(new MyValidator());
}

问题是我不知道如何将 obj 参数与我需要运行以自动验证 的特定 initBinder 方法“ Hook ” obj 与我的自定义 validator 类。我需要一些方法让特定的 @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/

相关文章:

java - 有没有办法在java中将变量转换为常量?

java - 图像未显示在 Spring MVC 中

java - Struts 中 JSP 中的 Activity 表单是否有通用引用?

java - 实时java android流

java - 了解Spring框架应用主干概念

Java spring mvc : IllegalStateException: Cannot convert value of type [java. lang.String] 为所需类型

java - Spring MVC 文件上传将 null 传递给 Controller

java - 在远程服务器上托管 Java Web 应用程序

java - 如何暂停 Java.util.Timer?

java - 设置基于 eclipse 功能的 RCP 应用程序的依赖性问题