2015-04-06 90 views
2

我已經成功實現了針對簡單WebService調用(queryparams和簡單對象)的Jersey,但是當我嘗試sync商店或save記錄時,球衣不瞭解rootProperty作家。它不知道從哪裏開始,並且它不能從ExtJS發送的json記錄Consume。不幸的是rootProperty是ExtJS在將數據轉換爲JSON時必需的,所以我離不開它。我能明顯使用Consumes(MediaType.TEXT_PLAIN)和改造的對象自己,但我試圖把新澤西州的自動對象編組等優勢使用Jersey rest web服務讀取ExtJS編寫器根屬性

什麼是用於.sync存儲數據或.save記錄一般的做法?

編輯:我不認爲問題是與我的對象的JSON。我店的代理配置如下:

proxy: { 
     type: 'ajax', 
     url: 'ext/AnnouncementHelper/myFunction', 
     headers: {'Content-Type': 'application/json;charset=utf-8'}, 
     reader: { 
      type: 'json', 
      rootProperty: 'data', 
      messageProperty: 'processMessage' 
     }, 
     writer: { 
      type: 'json', 
      rootProperty: 'data', 
      encode: true, 
      writeAllFields: true 
     } 

這樣做的是創建具有下列參數的POST請求:

data={id: 1, description: 'status 1'} 

我的模型配置如下:

public class AnnouncementStatus { 

    private int id; 
    private String description; 

    @JsonCreator 
    public AnnouncementStatus() { 

    } 

    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; 
    } 
} 

我功能聲明是:

@POST 
@Path("myFunction") 
@Produces(MediaType.APPLICATION_JSON) 
@Consumes(MediaType.APPLICATION_JSON) 
public Response myFunction(AnnouncementStatus status) 

這使我在Java以下錯誤:

org.codehaus.jackson.JsonParseException:意外字符( 'd'(代碼100)):預測的有效值(數字,字符串,數組,對象, 「真」,「假」或「空」)

我猜傑克遜不喜歡,我的目標是開始與data=但我不能避免這種情況,因爲它是強制性的有一個根屬性時使用商店和記錄。

回答

0

我發現了我遇到的問題的解決方案,雖然沒有解決問題。

我仍然不知道如何讀取使用的球衣作家的根本屬性,但我發現我不需要了,因爲如果我們改變我們代理的作家有encoding: false不強制設置rootProperty,它只是將記錄作爲數組發送。澤西的串行器可以理解這一點,它可以將數據正確解碼爲對象。

相關問題