![](/img/trans.png)
[英]Reading ExtJS writer root property using Jersey rest web service
[英]Rest web service consuming JSON using Jersey and ExtJS
我正在嘗試實現Jersey框架,以便使用寧靜的方法路由我們的客戶請求。 我已經成功創建了讀取原始參數並將其發送的方法,它們甚至可以使用來自對象的JSON進行響應。 但是我無法做的一件事是從發布/輸入甚至獲取請求中讀取(即消耗)一個json對象。 我已經嘗試了所有可以在網上找到的內容,但無濟於事。 由於某些工作問題,我只能使用Java 6和Jersey 1.19。 另外,對於客戶端,我們使用ExtJS。
我的ExtJS請求的格式如下:
Ext.Ajax.request({
url: 'rest/RestClass/getMessage',
method: 'PUT',
header: {
'Content-Type': 'application/json'
},
jsonData: {
status: {
id: 1,
description: 'Description'
}
},
success: function(response) {
var result = response.responseText;
},
failure: function(response) {
Ext.Msg.alert('Communication Error', 'Failed');
}
});
至於我的后端東西,我有這個:
@PUT
@Path("/getMessage")
@Consumes(MediaType.APPLICATION_JSON)
public void getMsg(JAXBElement<Status> status) {
System.out.println("status id = " + status.getValue().getId());
System.out.println("status description = " + status.getValue().getDescription());
}
我的Status對象也是:
@XmlRootElement
public class Status{
private int id;
private String description;
public Status() {
}
public void setId(int id) {
this.id = id;
}
public int getId() {
return id;
}
public void setDescription(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}
由於已經發送了成功的請求,因此我已經正確映射了jersey servlet等。 我的問題是當我嘗試在參數中發送帶有json對象的對象時出現錯誤。
起初,即使我使用的是jersey-bundle-1.19.jar
,其中包含所需的所有內容,但我還是因為缺少jackson
庫而jersey-bundle-1.19.jar
。 下載jackson-jaxrs-1.9.13.jar
並將其添加到項目中后,我現在收到此錯誤:
找不到Java類javax.xml.bind.JAXBElement和Java類型javax.xml.bind.JAXBElement和MIME媒體類型application / json的消息正文閱讀器。
我什至添加了一些jaxb
jar,以防萬一,但仍然出現相同的錯誤。 我在網上看到的許多示例都不適用於我。 而且他們都使用maven進行依賴控制,而我們沒有訪問權限,所以我不確定我們是否使用相同的庫...
我在這里尋找的是具有我現有功能的解決方案:球衣1.19 ExtJS 5 JDK 6 WebLogic 10.X
目標是能夠發送帶有JSONObject作為參數的請求,並將其解碼為服務器端為現有對象類型。
編輯:我什至在我的web.xml中添加了POJO映射(我發現在線需要澤西支持json / object映射)
<init-param>
<param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
<param-value>true</param-value>
</init-param>
仍然有同樣的問題。 客戶端415 error for unsupported media type
給我一個415 error for unsupported media type
我找到了解決我問題的方法。 需要進行一些更改:
在請求的jsonData對象中,不應有status
根屬性。 只是對象本身:
jsonData: {
id: 1,
description: 'Description'
},
另外,我從方法的聲明中刪除了JAXBElement<Status>
。 它只是接收一個Status status
對象。
最后, Status class
不需要@XmlRootElement
批注。 但是,它需要在其默認(空)構造函數上使用@JsonCreator
批注。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.