【问题标题】:RestyGWT + Jersey Error 500 when sending a not null or empty List发送非空或空列表时的 RestyGWT + Jersey 错误 500
【发布时间】:2015-07-25 06:17:02
【问题描述】:

假设我有一个与此类似的 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 的内容似乎对这个问题并不重要。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    希望有帮助。

    【讨论】:

    • 请注意,如果您想发回字符串,您可能需要将@Produces(MediaType.APPLICATION_JSON) 更改为@Produces(MediaType.TEXT_PLAIN) ...
    • 感谢您的回答。删除@Consumes 注释根本不影响结果,将@Producesannotation 更改为Text Plain 也有相同的结果,我仍然无法发送一个包含一个元素的列表
    【解决方案2】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-18
      • 1970-01-01
      • 2011-04-16
      • 1970-01-01
      相关资源
      最近更新 更多