java - Spring REST Controller 接受请求正文中的任意元素
问题描述
我正在执行 PUT 调用以更新现有实体并发送以下请求正文:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<campaign xmlns:xlink="http://www.w3.org/1999/xlink">
<aaaa>123</aaaa>
</campaign>
服务器以 200 OK 响应,尽管在响应映射到的 POJO 类中肯定没有属性“aaaa”。调试显示一个完全空的 POJO 实例正在传递给控制器。
我怎样才能让 Spring 抱怨它?我们的用户无法理解为什么更新不起作用,他们只是拼错了属性名称 - 并且不明白他们犯了错误,因为他们得到了 200 OK。
我可以以某种方式使用 BindingResult 吗?将我的控制器方法更改为这样的方法不起作用:
public RsCampaign updateCampaign(@Validated @RequestBody RsCampaign rsCampaign, BindingResult bindingResult, ...
然后 Spring 抱怨:
java.lang.IllegalStateException: Errors/BindingResult argument declared without preceding model attribute. Check your handler method signature!
这里的这个问题很相似,但对我没有帮助:@RequestBody 不限于 POJO 类型和 BindingResult hasErrors 总是假
解决方案
推荐阅读
- architecture - CQRS:查询和业务规则
- php - 为什么这个采用平面数组的函数需要这么长时间才能使其成为嵌套数组?
- amazon-web-services - CloudFormation - 手动删除堆栈中的资源并更新
- flutter - 在小部件构建期间调用的 setState()
- python - 如何协调上下文管理器与 Jupyter 笔记本的基于单元的执行风格?
- c# - .Net 解决方案中的多个项目 - 结合所有项目的构建工件
- pyspark - 如何使用 Pyspark 标记窗口中的最后一行
- reactjs - 无法使用 CRA 让 cypress 使用 typescript
- python-3.x - RuntimeError:模型类 first_app.models.Topic 未声明显式 app_label 且不在 INSTALLED_APPS 中的应用程序中
- vb.net - 防止旧表单关闭,直到新表单打开