0

假设我有一个类似于此的 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 或为空时,Resource 的逻辑会执行应有的操作,我可以毫无问题地对其进行调试。

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

我不知道为什么会发生这种情况,而且我真的找不到任何类似的问题,任何帮助将不胜感激。

4

2 回答 2

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

希望有帮助。

于 2015-07-24T06:11:53.870 回答
0

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

问题是,问题实际上出在我的 json 表示中,我用私有变量和 getter 和 setter 定义了它(我有一些其他 json 表示的集合和实例以及其他字符串和原始变量)

问题是,出于某种原因,我真的很想了解更多信息,如果将具有另一种 json 表示类型的变量设置为私有,则会发生此错误

所以,我只是将该变量设置为公共并且一切正常,奇怪的是另一个 json 表示类的集合即使作为私有变量也可以正常工作(原语、字符串和日期也可以正常工作)。

于 2015-07-24T22:17:02.820 回答