当前位置: 首页 > 知识库问答 >
问题:

CXF返回元素列表

陆弘光
2023-03-14

这工作正常:

@GET
@Path("elements")
public List<Element> getElements(@HeaderParam(SESSION_TOKEN) String token) {
    try {
        if (token != null) {
            Session session = new Session();
            if (session.initWithToken(token)) {
                ElementFacade sf = ElementFacade.getInstance();
                return sf.getElements(session.getUser());
            }
        }
    } catch (Throwable th) {
        log.error("", th);
    }
    return new ArrayList<Element>();
}

我得到了一个非常好的JSON数组和对象。

现在的问题是,我喜欢将我的数据作为有效载荷放入响应中,以便能够设置标头和状态,或者返回一个错误对象作为有效载荷。但是不管用。

@GET
@Path("elements2")
public Response getElements2(@HeaderParam(SESSION_TOKEN) String token) {
    try {
        if (token == null) {
            return ResponseFactory.createResponse(401, 4007);
        }
        Session session = new Session();
        if (session.initWithToken(token)) {
            ElementFacade sf = ElementFacade.getInstance();
            return Response.status(200)
                    .header(Endpoint.SESSION_TOKEN, session.getToken())
                    .entity(sf.getElements(session.getUser())).build();
        }
        return ResponseFactory.createResponse(403, 4006);
    } catch (InvalidTokenException e) {
        return ResponseFactory.createResponse(401, 4005);
    } catch (SessionTimeoutException e) {
        return ResponseFactory.createResponse(401, 4004);
    } catch (Throwable th) {
        log.error("", th);
        return ResponseFactory.createResponse(500, 5099);
    }
}

Mai 16,2012 7:00:35 PMorg.apache.cxf.jaxrs.interceptor.JAXRSOutInterceptor写响应错误消息警告:未找到响应类ArrayList的消息正文编写器。

如何在第二个功能中使用与第一个功能相同的现有功能?

我读过一些关于编写自己的MessageBodyWriter的文章,但在那个类中,我需要将整个JSON编写到OutputStream中,这似乎需要大量的工作和开销。。。

预先感谢

共有1个答案

安轶
2023-03-14

太简单了。但是没有在任何文档中找到它...

我尝试了很多,然后咩咩...

@GET
@Path("elements2")
public Response getElements2(@HeaderParam(SESSION_TOKEN) String token) {
      try {
          if (token == null) {
              return ResponseFactory.createResponse(401, 4007);
          }
          Session session = new Session();
          if (session.initWithToken(token)) {
              ElementFacade sf = ElementFacade.getInstance();
              List<Element> list = sf.getElements(session.getUser());
              return Response.status(200)
                      .header(Endpoint.SESSION_TOKEN, session.getToken())
                      .entity(new GenericEntity<List<Element>>(list) {}).build();
          }
          return ResponseFactory.createResponse(403, 4006);
      } catch (InvalidTokenException e) {
          return ResponseFactory.createResponse(401, 4005);
      } catch (SessionTimeoutException e) {
          return ResponseFactory.createResponse(401, 4004);
      } catch (Throwable th) {
          log.error("", th);
          return ResponseFactory.createResponse(500, 5099);
      }
}

就这样...你只需要创建一个GenericEntity...

 类似资料:
  • 有一个简单的: 以及任务对象的列表。如何通过使用获得每个作为的列表。我试过这个: 但它返回

  • 问题内容: 我有一个pojo,尝试将csv文件中的数据读取到列表中,然后将其打印出来。从文件读取工作正常,在读取/添加的瞬间,我可以看到正确的ID,但是一旦尝试将其全部打印回来,我只会得到列表的最后一个元素。以下是我正在尝试的: 我从上面得到的输出是: 团队编号为:1 团队编号为:2 团队编号为:3 团队编号为:4 球队信息:4 球队信息:4 球队信息:4 球队信息:4 我想念什么..?为什么前三

  • 我正在尝试通过检查网页并识别我要提取的内容的XPath来刮取一些web元素。对于某些元素,我得到了预期的结果,而对于其他元素,我没有得到预期的结果。请参阅下面的可复制示例: 上载我要分析的页面: 然后,我使用XPath语言标识想要查看的元素的路径: 为了提取我希望的值,我现在在文章列表中查找元素time和span。最终的结果是一个时间表列表,但也是一个空的阅读时间列表。我尝试使用不同的版本而不是,

  • 我想过滤map列表的元素,然后在Java8+中返回map 在getEmployeeByDepartment方法中,对于映射中的每个条目,使用下面的filterEmployee方法在映射值的列表中筛选employee,返回的map1将包含映射,以便 <“tech”,list2.add(emp6)>//emp6的filterEmployee返回true 我在下面试过这个和那个,但没有成功

  • 我是JOOQ新手,目前无法将连接查询映射到映射 这是我的代码: 假设我在订单中有1行,在订单项目文章中有2行。运行由(在.fetchGroups()之后)按预期返回我2行,所以我假设调用fetchGroups()也会用两个条目填充我的列表?! 我错过了什么? 谢谢 更新: 根据要求,类: 所以这只是JOOQ POJO类的扩展,用于与API客户机的JSON通信。。。

  • jsoup元素的文档。hasText方法说: 测试此元素是否有任何文本内容(不仅仅是空白)。 但是下面的例子不是这样说的: 输出是 我希望 有没有办法让JTAY考虑<代码>