Spring @ModelAttribute模型字段映射
我正在重写使用内部框架编写的旧REST服务,以使用Spring。我有一个带有POST方法的Controller,该方法采用一个参数作为POST或x-www-
form-urlencoded正文。按照多个StackOverflow答案,我使用了@ModelAttribute批注并创建了一个模型。
我的问题是,旧的REST API在蛇形情况下使用属性名称-say
some_property
。我希望我的Java代码遵循Java命名约定,因此在我的模型中该字段称为someProperty
。我尝试像在DTO对象中一样使用@JsonProperty批注,但是这次没有用。仅当模型中的字段命名为时,我才设法使代码工作some_property
。这是我的示例代码:
import com.fasterxml.jackson.annotation.JsonProperty;import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Mono;
@RestController
@RequestMapping("/my/api/root")
public class SomethingController {
@PostMapping("/my/api/suffix")
public Mono<Object> getSomething(
@RequestParam(name = "some_property", required = false) String someProperty,
@ModelAttribute("some_property") Model somePropertyModel) {
// calling my service here
}
public class Model {
@JsonProperty("some_property")
private String someProperty;
private String some_property;
// Getters and setters here
}
}
我正在寻找注释或任何其他优雅的方式来将Java命名样式保留在代码中,但使用REST API中的旧属性名称。
回答:
该@JsonProperty
注解只能用JSON格式的工作,但你使用x-www-form-urlencoded
。
如果您无法更改POST类型,则必须编写自己的Jackson ObjectMapper:
@JsonProperty无法用于Content-Type:application / x-www-form-
urlencoded
以上是 Spring @ModelAttribute模型字段映射 的全部内容, 来源链接: utcz.com/qa/403883.html