Java 基于HTTP方法定制Spring MVC requestBody映射?

Java 基于HTTP方法定制Spring MVC requestBody映射?,java,spring,spring-mvc,spring-boot,jackson,Java,Spring,Spring Mvc,Spring Boot,Jackson,我的Java8,SpringBoot1.4应用程序有一个控制器方法,使用application/json(jackson 2.6.5)作为 在MyModel中,我有一个字段,当HTTP method=POST时,我想给它一个自动生成的值,当HTTP method=PUT时,直接使用请求值。这可行吗 希望我能解释清楚。非常感谢任何帮助添加HttpServletRequest参数并调用getMethod() 有关支持的方法参数类型,请参阅。或者阅读的javadoc 您还应该指定希望控制器方法处理的H

我的Java8,SpringBoot1.4应用程序有一个控制器方法,使用application/json(jackson 2.6.5)作为

在MyModel中,我有一个字段,当HTTP method=POST时,我想给它一个自动生成的值,当HTTP method=PUT时,直接使用请求值。这可行吗


希望我能解释清楚。非常感谢任何帮助

添加
HttpServletRequest
参数并调用
getMethod()

有关支持的方法参数类型,请参阅。或者阅读的javadoc


您还应该指定希望控制器方法处理的HTTP方法,例如
@RequestMapping(method={RequestMethod.POST,RequestMethod.PUT})

oh。我懂了。我可以用两种控制器方法来完成吗?1个用于POST,1个用于PUT。这对我来说更清楚。即使如此,我如何将该方法传递给MyModel中该字段的setter,这只是一个带有jackson注释的POJO,您不能。这是您必须在controller方法中执行的操作。但是当我的controller获得MyModel时,它已经被映射。我将无法知道该字段是否由Payload自动创建或设置不知道您的问题是什么。如果放置了方法,则数据对象的特定字段是从请求分配的。如果方法为POST,则未分配字段,并且在对对象执行任何请求的操作(创建/更新/…)之前,您的控制器代码可以执行自动分配。对于POST(创建),我需要忽略此字段的输入并获取自动生成的值;但是使用PUT,我需要将请求中该字段的值(如果存在)与路径变量进行比较。感谢所有的帮助和注释。非常感谢。我已经从DTO中删除了只读jackson注释,并将该字段的数据自动生成逻辑移到了服务中,我认为这在概念上也更有意义
public MyModel updateModel(@Valid @RequestBody( required = true) MyModel myModel) {
....
}