首页 > 解决方案 > 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 总是假

标签: javaspringrestvalidationrequest

解决方案


推荐阅读