【发布时间】:2018-01-17 00:43:35
【问题描述】:
这可能是一项简单的任务,但我找不到方法。基本上,我需要在控制器中使用 @RequestBody 注释时禁止某些参数。
这是我的模型:
@Data
public class MyModel {
private int id;
private String name;
}
我想要做的是在响应时,我希望将这两个属性序列化为 JSON,但是在创建或更新时,我不想接收 id 作为 @RequestBody 的一部分反序列化。
现在,如果我在 JSON 正文中传递 id,Spring 会初始化一个 MyModel 对象,并将其 id 设置为传递的值。
原因?在创建模型之前无法生成 ID,因此应用程序不应允许设置 ID。更新时,需要在 URL 本身中传递 ID,例如(PUT /mymodels/43)。这有助于适当地遵循 REST 原则。
那么,有没有办法实现这个功能呢?
更新 1:
现在,我坚持使用请求包装器。我创建了一个新类MyModelRequestWrapper,只有name 作为其属性,并将其与@RequestBody 注释一起使用。
【问题讨论】:
标签: java json spring-mvc jackson