java - 在响应实体中发送 XSSFWorkbook(未找到类 org.apache.xmlbeans.impl.store.Locale 的序列化程序)
问题描述
我正在尝试在响应实体中发送 XSSFWorkbook 对象并收到以下错误:
[Servlet Error]-[rest-servlet]: org.codehaus.jackson.map.JsonMappingException: No serializer found for class org.apache.xmlbeans.impl.store.Locale and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: org.apache.poi.xssf.usermodel.XSSFWorkbook["ctworkbook"]->org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTWorkbookImpl["fileVersion"]->org.openxmlformats.schemas.spreadsheetml.x2006.main.impl.CTFileVersionImpl["xmlLocale"])
at org.codehaus.jackson.map.ser.StdSerializerProvider$1.failForEmpty(StdSerializerProvider.java:90)
at org.codehaus.jackson.map.ser.StdSerializerProvider$1.serialize(StdSerializerProvider.java:63)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:245)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:212)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:245)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:212)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:245)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:212)
at org.codehaus.jackson.map.ser.BeanPropertyWriter.serializeAsField(BeanPropertyWriter.java:428)
at org.codehaus.jackson.map.ser.BeanSerializer.serializeFields(BeanSerializer.java:245)
at org.codehaus.jackson.map.ser.BeanSerializer.serialize(BeanSerializer.java:212)
at org.codehaus.jackson.map.ser.StdSerializerProvider._serializeValue(StdSerializerProvider.java:587)
at org.codehaus.jackson.map.ser.StdSerializerProvider.serializeValue(StdSerializerProvider.java:245)
at org.codehaus.jackson.map.ObjectMapper.writeValue(ObjectMapper.java:1145)
at org.codehaus.jackson.jaxrs.JacksonJsonProvider.writeTo(JacksonJsonProvider.java:520)
at com.sun.jersey.json.impl.provider.entity.JacksonProviderProxy.writeTo(JacksonProviderProxy.java:160)
at com.sun.jersey.spi.container.ContainerResponse.write(ContainerResponse.java:306)
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1437)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349)
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339)
at com.sun.jersey.spi.container.servlet.WebComponent.service(WebComponent.java:416)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:537)
at com.sun.jersey.spi.container.servlet.ServletContainer.service(ServletContainer.java:699)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:831)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1657)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletWrapper.java:1597)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAppFilterChain.java:104)
at com.ibm.ws.webcontainer.filter.WebAppFilterChain._doFilter(WebAppFilterChain.java:77)
at com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(WebAppFilterManager.java:908)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:934)
at com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(ServletWrapper.java:502)
at com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleRequest(ServletWrapperImpl.java:179)
at com.ibm.ws.webcontainer.webapp.WebApp.handleRequest(WebApp.java:3935)
at com.ibm.ws.webcontainer.webapp.WebGroup.handleRequest(WebGroup.java:276)
at com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer.java:931)
at com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebContainer.java:1592)
at com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLink.java:186)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDiscrimination(HttpInboundLink.java:452)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewRequest(HttpInboundLink.java:511)
at com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processRequest(HttpInboundLink.java:305)
at com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.complete(HttpICLReadCallback.java:83)
at com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCompleted(AioReadCompletionListener.java:165)
at com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsyncFuture.java:217)
at com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(AsyncChannelFuture.java:161)
at com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
at com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
at com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultHandler.java:775)
at com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1604)
这是我的 java 控制器方法:
@POST
@Path("/excel")
public Response getExcel() {
try {
return Response.status(Response.Status.OK).entity(this.classname.getExcelObject()).build();
} catch (Exception e) {
return ExceptionHandler.error(Response.Status.INTERNAL_SERVER_ERROR, e.getMessage());
}
}
我尝试为只有 XSSFWorkbook 对象的新类创建 getter 和 setter,然后返回该类的对象。但这不起作用。
如何在响应实体中返回 Apache poi XSSFWorkbook 对象。
我不想支持用户下载此对象,但想稍后使用它,因此我没有使用 HTTPServletResponse 标头进行下载。
解决方案
推荐阅读
- angular - 如何使用单独的路由模块从组件路由到同级路由模块
- php - 自定义 PHP 和 CSS 不能用作 Wordpress 插件 - 光标
- ios - 当结构不符合 ExpressibleByArrayLiteral 时,为什么可以从数组字面量创建对象?
- python - 在 Jupyter Notebook 中欺骗 argparse
- python - Pandas - ValueError:列标签不是唯一的
- javascript - Partial View 的 JavaScript 只改变第一个 Partial
- javascript - P5 仅绘制一次某些项目,但保持它们连续渲染
- assembly - x86_64 汇编:中断标志和 TPR 寄存器的影响
- flutter - Provider 不使用 Flutter 中的 Provider 包通知监听器
- python - 如何从 list1 获取 str 成为基于 List2 值的变量?