[英]RestyGWT + Jersey Error 500 when sending a not null or empty List
假設我有一個類似於以下內容的Jersey資源:
@Path("/test")
public class TestResource{
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public Response test(List<JSONRepresentation> json){
//some logic that gives different responses, all just Strings
}
}
還有一個像這樣使用它的RestyGWT服務:
@Path("api/test")
public interface TestService extends RestService{
@POST
public void test(List<JSONRepresentation> json, MethodCallback<String> callback);
}
事實是,當我嘗試使用服務訪問資源時,如果列表不為空或為空,則會收到與服務器代碼無關的內部服務器錯誤,因為我什至無法調試測試方法邏輯。
但是,當List為null或為空時,資源的邏輯將執行應有的工作,並且我可以對其進行調試而沒有任何問題。
JSONRepresentation的內容似乎對這個問題並不重要。
我不知道為什么會這樣,而且我真的找不到任何類似的問題,我們將不勝感激。
如果要將字符串發送回客戶端,請將代碼更改為:
@Path("/test")
public class TestResource{
@POST
@Produces(MediaType.APPLICATION_JSON)
public String test(List<JSONRepresentation> json){
//some logic that gives different responses, all just Strings
}
}
並將資源代碼更改為:
@Path("api/test")
public interface TestService extends RestService{
@POST
public void test(List<JSONRepresentation> json, TextCallback callback);
}
}
希望能有所幫助。
好的,我以某種方式弄清楚了為什么會發生該錯誤以及如何避免該錯誤。
問題是,問題實際上出在我的json表示形式中,我已經用私有變量以及每個變量的getter和setters定義了它(我上面有一些其他json表示形式的集合和實例以及其他String和基本變量)
事實是,由於某種原因,我真的想了解更多信息,如果將具有其他json表示形式的變量設置為私有,則會發生此錯誤
因此,我只是將該變量設置為public,並且一切正常,奇怪的是,另一個json表示形式類的Collections甚至可以作為私有變量(primitive,String和Date也可以正常工作)正常工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.