2017-06-14 79 views
0

我的Spring MVC Web Service代碼如下。如何使用spring mvc從Jaxb解除Http Post Rest Web服務中的xml?

模型類

@XmlRootElement(name="secretData") 
public class VData { 


     private long lKId; 



     @XmlElement(name="kId") 
     public long getlKId() { 
      return lKId; 
     } 


     public void setlKId(long lKId) { 
      this.lKId = lKId; 
     }  
    } 

控制器方法

@RequestMapping(value = "/vendor", method = RequestMethod.POST) 
     public String addVendor(@RequestBody VData vData) { 

      /*Checking recieved value*/ 
      System.out.println(vData.getlKId());//**Returning 0 value ** 
      return "Success"; 
     } 

XML請求體爲Web服務

<secretData> 
    <kId>1</kId> 
</secretData> 

我得到的lKId 「0」 值。我在哪裏做錯了。請提供使用@XmlElement(name =「kId」)註釋將xml元素綁定到對象成員的正確方法。

回答

0

在你的@RequestMapping裏面加上consumes = MediaType.APPLICATION_XML_VALUE告訴控制器這個方法只會消耗xml。

@RequestMapping(value = "/vendor", method = RequestMethod.POST, consumes = MediaType.APPLICATION_XML_VALUE) 
    public String addVendor(@RequestBody VData vData) { 
     /*Checking recieved value*/ 
     System.out.println(vData.getlKId());//**Returning 0 value ** 
     return "Success"; 
    } 

而當你發佈通過HTTP設置頁眉XML,Content-type:application/xml

+0

仍然無法正常工作。我認爲unmarshaling必須完成。我不知道該怎麼做。 –

+0

你得到的錯誤是什麼?你需要在你的classpath中有Jackson數據綁定jar – mhshimul

0

爲Spring Web MVC框架使OXM(對象到XML映射),Spring需要一個HttpMessageConverter它可以讀取/到XML /寫。在Spring中有幾種實現可以使用Jackson,XStream,JAXB,...

當Spring在類路徑中檢測到其中一個庫時,Spring會自動添加一個HttpMessageConverter。你在類路徑上有JAXB庫嗎?

您也可以手動將Jaxb2RootElementHttpMessageConverter註冊爲bean。通過JavaConfig這看起來像:

@Bean 
public HttpMessageConverter oxmHttpMessageConverter() { 
return new Jaxb2RootElementHttpMessageConverter(); 
} 
相關問題