@Override public void apply(H.Request req, H.Response resp) { try { applyCookies(resp); applyHeaders(resp); resp.contentType(contentType); if (!resp.containsHeader(CONTENT_DISPOSITION)) { resp.contentDisposition(null, true); } applyStatus(resp); applyBeforeCommitHandler(req, resp); Img.source(img).writeTo(resp.outputStream(), contentType); } catch (Exception e) { throw E.unexpected(e); } finally { try { resp.commit(); applyAfterCommitHandler(req, resp); } finally { clearThreadLocals(); } } }
@Override public void apply(H.Request req, H.Response resp) { try { applyCookies(resp); applyHeaders(resp); resp.contentType(contentType); if (!resp.containsHeader(CONTENT_DISPOSITION)) { resp.contentDisposition(null, true); } applyStatus(resp); applyBeforeCommitHandler(req, resp); Img.source(img).writeTo(resp.outputStream(), contentType); } catch (Exception e) { throw E.unexpected(e); } finally { try { resp.commit(); applyAfterCommitHandler(req, resp); } finally { clearThreadLocals(); } } }
@Override public void render(Object result, ActionContext context) { MimeType mimeType = MimeType.findByContentType(context.accept().contentType()); E.illegalStateIfNot(mimeType.test(MimeType.Trait.excel)); H.Response resp = context.resp(); resp.contentDisposition(context.attachmentName(), false); ExcelWriter.Builder builder = ExcelWriter.builder() .dateFormat(context.dateFormatPattern(true)) .filter(filter(context)) .headerMap(headerMapping(context)) .fieldStylePatterns(excelDataFormatManager().fieldStyleLookup) .headerTransformer(Keyword.Style.READABLE.asTransformer()); if (mimeType.test(MimeType.Trait.xlsx)) { builder.asXlsx(); } builder.build().write(result, context.resp().outputStream()); }
/** * Setup the content-type and content-disposition */ @Override protected void beforeRender(ActionContext context) { H.Format format = context.accept(); String contentType = format.contentType(); H.Response response = context.resp(); response.contentType(contentType); if(!response.containsHeader("content-disposition")) { response.contentDisposition(context.attachmentName(), false); } }