发送非空或空列表时RestyGWT + Jersey错误500

时间:2015-07-23 23:26:06

标签: java gwt jersey jersey-2.0 resty-gwt

说我的泽西资源有点类似于此:

@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或为空,我会收到与服务器代码无关的内部服务器错误,因为我可以'甚至调试测试方法逻辑。

但是,当List为null或为空时,Resource的逻辑会执行它应该的操作,我可以毫无问题地调试它。

对于这个问题,JSONRepresentation的内容似乎并不重要。

我不知道为什么会发生这种情况,我无法找到任何类似的问题,任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:0)

如果要将字符串发送回客户端,请将代码更改为:

@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);
   }
}
希望有所帮助。

答案 1 :(得分:0)

好的,我以某种方式弄清楚错误发生的原因以及如何避免错误。

问题是,问题实际上是在我的json表示中,我已经为它们中的每一个定义了私有变量和getter以及setter(我有一些set和其他json表示的实例以及其他String和原始变量)

问题是,出于某种原因,我真的想知道更多,如果一个具有另一种json表示的变量设置为私有,则会发生此错误

所以,我只是将该变量设置为公共,一切正常,奇怪的是,即使私有变量(基元,字符串和日期工作也很好),其他json表示类的集合也能正常工作。