Spring Boot 中的 @InitBinder 无法与 @RequestBody 一起使用

2023-12-25

如果我使用@InitBinder而不限制它,它可以与@RequestBody一起正常工作来验证我的对象。

@InitBinder
private void initBinder(WebDataBinder binder) {
    binder.setValidator(validator);
}



@RequestMapping(method=RequestMethod.POST)
public CustomerQuickRegisterEntity saveNewCustomer(@Valid @RequestBody  CustomerQuickRegisterEntity customerEntity,BindingResult result)
{
    if(result.hasErrors())
    {
        return new CustomerQuickRegisterEntity();
    }
    return customerQuickRegisterRepository.save(customerEntity);

}

但问题是,当我通过这样做将其限制为只有一个对象时@InitBinder("customerEntity")它没有验证该对象。所以我搜索了 stackoverflow 并发现@InitBinding仅适用于带有注释的对象@ModelAttribute。那么我的问题是它工作得很好@RequestBody当我用它作为@InitBinder但当我使用它时效果不佳@InitBinder("customerEntity")……为什么会这样呢? 是否有任何其他方法来验证与关联的对象(不是单独对象的属性)@RequestBody


这是一个老问题,但我已经设法得到了@InitBinder注释来绑定我的自定义Validator to a @Valid @RequestBody参数如下:

@InitBinder
private void bindMyCustomValidator(WebDataBinder binder) {
    if ("entityList".equals(binder.getObjectName())) {
        binder.addValidators(new MyCustomValidator());
    }
}

如果您尝试通过设置注释的值来过滤绑定参数,那么它不适用于@RequestBody争论。所以这里我改为检查对象名称。我的方法参数实际上被调用entities,但 Spring 决定将其称为entityList。我必须调试它才能发现这一点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot 中的 @InitBinder 无法与 @RequestBody 一起使用 的相关文章

随机推荐

  • 是否无法将文件夹添加到 ASP.NET bin 文件夹?

    因为我试图重新创建一个遗留的 ASP NET 项目 而不是继续陷入兔子洞 试图弄清楚为什么它给了我一个关于它在哪里的线索 未设置对象引用 https stackoverflow com questions 40875865 why am i
  • 如何检查某个元素在屏幕上是否完全可见?

    我在 OS X 上使用 Selenium WebDriver 和 Chrome 驱动程序 用 Python 实现 我正在尝试编写一个测试来验证各种 HTML 元素是否完全地在屏幕上 例如 我有一个标签云 由于我的实现不佳 有时有些单词会从浏
  • Python - 如何从类方法中获取类名 - 使用@classmethod

    我有以下代码 class ObjectOne object classmethod def print class name cls print cls class name def print class name again self
  • GWT 列表框 - 如何使用文本查找项目索引?

    无论如何 是否可以使用 GWT 列表框中的项目文本查找项目的索引号 不 你必须通过它们并自己找到该索引 像这样 String text listBoxText int indexToFind 1 for int i 0 i
  • 使用正则表达式避免 pandas str.replace

    我有以下熊猫数据框 假设它有两列 id and search term id search term 37651 inline switch I do train search term train search term str repl
  • 如何从 flutter 访问设备应用

    有没有办法从 flutter 应用程序访问设备中安装的应用程序的详细信息并访问其隐私权限详细信息 例如 GMAIL 在我们的设备中拥有多少访问权限 目前没有官方库可用于检索设备中安装的软件包 你可以查看非官方插件 包管理器插件 https
  • 在视图寻呼机上方显示具有嵌套片段的对话框

    我设置了一个非常简单的测试项目https github com ArtworkAD ViewPagerDialogTest https github com ArtworkAD ViewPagerDialogTest评估以下情况 主要活动有
  • 为什么SSIS运行时无法启动分布式事务?

    在为 SQL Server 2008 创建 SSIS 包时 我遇到以下错误 错误 SSIS 运行时未能 启动分布式事务到期 错误 0x8004D01B 交易 经理没空 DTC 交易未能开始 这 可能会发生 因为 MSDTC 服务 没有运行
  • Java的Paint方法存在问题,刷新速度太离谱

    我正在为大学开发一个非常简单的 R Type 版本 但尽管它有效 但飞行速度却很慢 所以动作丑陋且笨拙 我使用重绘方法来刷新屏幕 还有其他方法或比它更好的方法吗 主面板的绘制方法 Override public void paint Gra
  • Rails:在初始化程序中获取主机名

    我正在使用 Sorcery 进行身份验证 并且需要在其初始值设定项中设置第三方身份验证 初始化程序有一行如下所示 config twitter callback url http example dev auth callback prov
  • Appengine 批量下载器未下载列表属性

    这与我之前的一个问题 https stackoverflow com questions 4231153 appengine bulkdownloader to xml with nested entities 但有新信息 我正在尝试将bu
  • 冷融合映射错误

    注意 如果您想使用绝对模板路径 例如 template mypath index cfm 与 CFINCLUDE 您必须创建一个 使用 ColdFusion Administrator 映射路径 我进入了管理页面 但不知道要在这里输入什么
  • fieldset 必须是表单吗?

    我对DTD一无所知 http www bls gov oco ocos292 htm http www bls gov oco ocos292 htm 在此页面上查看如何在表单之外使用 fieldset 这很酷 我喜欢这种风格 我认为这个问
  • 在 React 中将数据从子级传递给父级

    我在 React 中有 3 个组件 其中一个充当容器 将我的子组件传递到表单中进行渲染 提交表单时 我想获取父组件中的每个子组件 循环遍历每个子组件 创建服务器期望的对象 然后将对象列表发送回服务器 我正在努力访问父组件中 onSubmit
  • JAXB 解组返回 Null

    我正在制作这个示例 GUI 它只是将计算机部件从一侧移动到另一侧 并且能够将列表 以 xml 格式 加载和保存到桌面 除了重新加载已保存的 xml 文件之外 一切正常 我认为这与Save java中的注释有关 话虽如此 我不确定需要什么或者
  • pywinauto:访问 chrome gui

    我正在尝试使用 pywinauto 选择打印机并在 chrome 浏览器上进行打印 但我无法访问 gui 组件 我可以在 UIAutomation 模式下看到 Microsoft Inspect exe 中的组件 参见屏幕截图 我已经开始使
  • 将 Curl 命令转换为在 Zapier Webhook 中运行

    我正在尝试找到一种方法来运行它curlZapier 上的 Webhook Zap 中的命令 但我似乎无法弄清楚 我如何将其输入到 Webhook 中 将其作为一个运行会更好吗 Code Zap curl X POST https api z
  • 如何在 RealityKit 中显示图库中的图像?

    我想显示图库中的图像 我正在使用 imagePicker 加载图像 func imagePickerController picker UIImagePickerController didFinishPickingMediaWithInf
  • io.open 与 python 中 open 的区别

    过去 有codecs被替换为io 虽然看起来更建议使用io open 大多数Python入门课程仍然在教授open 有一个问题是Python 中 open 和 codecs open 的区别 https stackoverflow com
  • Spring Boot 中的 @InitBinder 无法与 @RequestBody 一起使用

    如果我使用 InitBinder而不限制它 它可以与 RequestBody一起正常工作来验证我的对象 InitBinder private void initBinder WebDataBinder binder binder setVa