2017-07-01 101 views
0

Jackson註解在序列化對象時起作用,但解析請求參數不起作用。如何配置spring mvc基於Jackson註解填充@RequestMapping參數?

沒有與傑克遜註解如下一類:

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; 

    ... 
} 

正如你可以看到性能代號被序列爲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> 

現在,假設有一個請求映射如下:

@RequestMapping(value = "new", method = RequestMethod.POST) 
public Role create(Role role) { 
    ... 
} 

我填了一個形成名爲description和code_name的字段併發送到服務器。但是,只是將描述設置爲輸入角色,並且codeName爲空。

順便說一句,如果表單字段名稱替換爲codeName,那也沒關係。

+1

「的值是角色空」通過創建返回的一個? – efekctive

回答

0

你需要使用

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

我發送數據作爲表單數據,這是從身體和json編碼解碼角色。 –

相關問題