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

回到顶部