Java 如何配置spring mvc来填充基于Jackson注释的@RequestMapping参数?

Java 如何配置spring mvc来填充基于Jackson注释的@RequestMapping参数?,java,spring,forms,spring-mvc,Java,Spring,Forms,Spring Mvc,Jackson注释可以序列化对象,但解析请求参数不起作用 有一个带有Jackson注释的类,如下所示: public class Role{ @JsonProperty( value = "description", defaultValue = "description", required = false, access = Access.READ_WRITE) private String descrip

Jackson注释可以序列化对象,但解析请求参数不起作用

有一个带有Jackson注释的类,如下所示:

public class Role{
    @JsonProperty(
        value = "description", 
        defaultValue = "description", 
        required = false, 
        access = Access.READ_WRITE)
    private String description;

    @JsonProperty(
        value = "code_name", 
        defaultValue = "permission", 
        required = true, 
        access = Access.READ_WRITE)
    private String codeName;

    ...
}
@RequestMapping(value = "new", method = RequestMethod.POST)
public Role create(Role role) {
    ...
}
正如您所看到的,属性codeName在json或xml中被序列化为code_name。例如,获得角色是:

@RequestMapping(value = "{id}", method = RequestMethod.GET)
public Role getRole(@PathVariable id){
    ...
}
结果如下:

{
  "description": "..",
  "code_name": ".."
}
这是我的mvc配置:

<mvc:annotation-driven>
    <mvc:message-converters register-defaults="false">
        <bean
            class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
            <property name="objectMapper" ref="objectMapper" />
        </bean>
    </mvc:message-converters>
</mvc:annotation-driven>
我用名为description和code_name的字段填写表单并发送到服务器。但是,description只是设置为输入角色,并且代码名为null

顺便说一下,如果表单字段名替换为codeName也可以。

您需要使用

@RequestMapping(value = "new", method = RequestMethod.POST, produces = "application/json", consumes = "application/json")
public Role create(@RequestBody Role role) {

“角色中的值为null”是create?返回的值,我将数据作为表单数据发送,这是来自body和json编码的解码角色。