Example usage for javax.servlet.jsp.tagext BodyContent writeOut

List of usage examples for javax.servlet.jsp.tagext BodyContent writeOut

Introduction

In this page you can find the example usage for javax.servlet.jsp.tagext BodyContent writeOut.

Prototype


public abstract void writeOut(Writer out) throws IOException;

Source Link

Document

Write the contents of this BodyContent into a Writer.

Usage

From source file:com.jaspersoft.jasperserver.war.tags.BaseTagSupport.java

protected void includeNested(String path) throws JspException {
    BodyContent nestedContent = pageContext.pushBody();
    boolean popped = false;
    try {//w  w w  . j a  va2 s  . c  om
        pageContext.include(path);

        popped = true;
        pageContext.popBody();
        nestedContent.writeOut(pageContext.getOut());
    } catch (ServletException e) {
        log.error(e, e);
        throw new JspException(e);
    } catch (IOException e) {
        log.error(e, e);
        throw new JspException(e);
    } finally {
        if (!popped) {
            pageContext.popBody();
        }
    }
}

From source file:org.shredzone.cilla.web.tag.LinkTag.java

@Override
public int doEndTag() throws JspException {
    String url = null;//w  w w  .  j  av  a2  s .  co m
    String useTitle = null;

    lb.view(view);
    lb.author(author);
    lb.category(category);
    lb.page(page);
    lb.section(section);
    lb.picture(picture);
    lb.tag(tag);
    lb.header(header);
    lb.ref(ref);
    lb.qualifier(qualifier);
    lb.commentable(commentable);

    if (title != null) {
        useTitle = title;
    } else if (page != null) {
        useTitle = page.getTitle();
    } else if (category != null) {
        useTitle = category.getTitle();
    } else if (header != null) {
        useTitle = header.getCaption();
    }

    if (anchor != null) {
        lb.anchor(anchor);
    }

    url = lb.toString();

    if (url == null) {
        throw new JspException("Cannot link to view '" + view + "'");
    }

    if (var != null) {
        TagUtils.setScopedAttribute(pageContext, var, url, scope);
        return EVAL_PAGE;
    }

    HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();

    StringBuilder linktag = new StringBuilder();
    linktag.append("<a href=\"");
    linktag.append(HtmlUtils.htmlEscape(response.encodeURL(url)));
    linktag.append('"');

    if (id != null) {
        linktag.append(" id=\"").append(HtmlUtils.htmlEscape(id)).append('"');
    }

    if (onclick != null) {
        linktag.append(" onclick=\"").append(HtmlUtils.htmlEscape(onclick)).append('"');
    }

    if (styleClass != null) {
        linktag.append(" class=\"").append(HtmlUtils.htmlEscape(styleClass)).append('"');
    }

    if (style != null) {
        linktag.append(" style=\"").append(HtmlUtils.htmlEscape(style)).append('"');
    }

    if (useTitle != null) {
        linktag.append(" title=\"").append(HtmlUtils.htmlEscape(useTitle)).append('"');
    }

    linktag.append('>');

    try {
        pageContext.getOut().print(linktag.toString());

        BodyContent bc = getBodyContent();
        if (bc != null) {
            bc.writeOut(pageContext.getOut());
        }

        pageContext.getOut().print("</a>");
    } catch (IOException ex) {
        throw new JspException(ex);
    }

    return EVAL_PAGE;
}

From source file:de.laures.cewolf.taglib.tags.ChartImgTag.java

public int doAfterBody() throws JspException {
    try {//from  w w  w.j a  va2 s .co  m
        // double checking for null as Resin had problems with that
        final BodyContent body = getBodyContent();
        if (body != null) {
            final JspWriter writer = getPreviousOut();
            if (writer != null) {
                body.writeOut(writer);
            }
        }

    } catch (IOException ioex) {
        System.err.println("ChartImgTag.doAfterBody: " + ioex.getMessage());
        throw new JspException(ioex.getMessage());
    }
    return SKIP_BODY;
}

From source file:com.jaspersoft.jasperserver.war.tags.JasperViewerTag.java

public int doEndTag() throws JspException {
    HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();
    HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();

    try {//from   w ww.  j a  va  2  s  .c  o  m
        ReportUnitResult reportResult = getReportResult(request);
        JasperPrintAccessor printAccessor = reportResult.getJasperPrintAccessor();
        if (printAccessor == null) {
            log.error("There is no JasperPrint object cannot be accessed.");
            return EVAL_PAGE;
        }

        setReportContextAttributes(request, reportResult);

        Integer pageIndex = (Integer) request.getAttribute(getPageIndexAttribute());
        if (pageIndex == null) {
            pageIndex = new Integer(0);
        }

        ReportExecutionStatus reportStatus = printAccessor.getReportStatus();

        // get the status of the page, waiting for the page to be available in necessary
        ReportPageStatus pageStatus = printAccessor.pageStatus(pageIndex.intValue(), null);

        request.setAttribute("page", page);
        request.setAttribute("dataTimestamp", reportResult.getDataTimestamp());

        request.setAttribute(INNER_PAGINATION_ATTRIBUTE, innerPagination);
        request.setAttribute(IGNORE_PAGE_MARGINS, ignorePageMargins);

        Integer totalPageCount = reportStatus.getTotalPageCount();
        // set the total page count if known
        if (totalPageCount != null) {
            request.setAttribute("lastPageIndex", new Integer(totalPageCount - 1));

            //FIXME this duplicates logic in ReportExecutionController.viewReportPageUpdateCheck
            SnapshotSaveStatus snapshotSaveStatus = getDataCacheProvider()
                    .getSnapshotSaveStatus(reportResult.getReportContext());
            if (snapshotSaveStatus != null) {
                request.setAttribute("snapshotSaveStatus", snapshotSaveStatus.toString());
            }
        }

        // set the partial page count
        request.setAttribute("lastPartialPageIndex", new Integer(reportStatus.getCurrentPageCount() - 1));

        // if the page count is null, it means that the fill is not yet done but there is at least a page
        boolean emptyReport = totalPageCount != null && totalPageCount.intValue() == 0;
        request.setAttribute(EMPTY_REPORT_ATTRIBUTE, Boolean.valueOf(emptyReport));

        ApplicationContext applicationContext = getRequestContext().getWebApplicationContext();
        request.setAttribute(MESSAGE_SOURCE, applicationContext.getBean("messageSource"));

        if (!emptyReport) {
            if (!pageStatus.pageExists()) {
                // setting a header as there's no simple way currently to detect a specific exception in the client
                response.setHeader("reportPageNonExisting", "true");
                throw new JSException("jsexception.view.page.does.not.exist", new Object[] { pageIndex });
            }

            request.setAttribute("pageIndex", pageIndex);

            if (!pageStatus.isPageFinal()) {
                request.setAttribute("pageTimestamp", pageStatus.getTimestamp());
            }

            JasperReportsContext jasperReportsContext = getJasperReportsContext(applicationContext);

            AbstractHtmlExporter exporter = HtmlExportUtil.getHtmlExporter(jasperReportsContext);
            exporter.setParameter(JRExporterParameter.JASPER_PRINT, printAccessor.getJasperPrint());
            exporter.setParameter(JRExporterParameter.PAGE_INDEX, pageIndex);
            exporter.setImageHandler(
                    new WebHtmlResourceHandler(response.encodeURL(imageServlet + "image={0}")));
            exporter.setResourceHandler(
                    new WebHtmlResourceHandler(response.encodeURL(resourceServlet + "/{0}")));
            exporter.setFontHandler(
                    new WebHtmlResourceHandler(response.encodeURL(resourceServlet + "&font={0}")));

            StringBuffer htmlHeader = new StringBuffer();
            String contextPath = request.getContextPath();

            // fix for Bug 26294 - [case #24473 +1] Problem with IE8 and IE9 when embedding app into iframe
            String referer = request.getHeader("Referer");
            referer = referer.substring(0, referer.indexOf(contextPath) + contextPath.length());
            // end fix
            exporter.setParameter(JRHtmlExporterParameter.HTML_HEADER, htmlHeader.toString());

            exporter.setParameter(JRHtmlExporterParameter.HTML_FOOTER, "");
            exporter.setParameter(JRHtmlExportUtils.PARAMETER_HTTP_REQUEST, request);
            exporter.setParameter(JRExporterParameter.IGNORE_PAGE_MARGINS, ignorePageMargins);
            WebflowReportContext webflowReportContext = getReportContextAccessor().getContext(request,
                    reportContextMap);
            webflowReportContext.setParameterValue("net.sf.jasperreports.web.app.context.path", contextPath);//FIXMEJIVE use constant
            //              webflowReportContext.setParameterValue(JRParameter.REPORT_CONTEXT, webflowReportContext);
            exporter.setReportContext(webflowReportContext);
            // hide the preview toolbar if view as dashboard frame
            if ((webflowReportContext.getParameterValue(ReportParametersAction.VIEW_AS_DASHBOARD_FRAME) != null)
                    && webflowReportContext.getParameterValue(ReportParametersAction.VIEW_AS_DASHBOARD_FRAME)
                            .toString().equalsIgnoreCase("true")) {
                request.setAttribute(ReportParametersAction.VIEW_AS_DASHBOARD_FRAME, "true");
            }
            HyperlinkProducerFactoryFlowFactory linkProducerFactory = (HyperlinkProducerFactoryFlowFactory) request
                    .getAttribute(getLinkProducerFactoryAttribute());
            if (linkProducerFactory != null) {
                JRHyperlinkProducerFactory hyperlinkProducerFactory = linkProducerFactory
                        .getHyperlinkProducerFactory(request, response);
                exporter.setParameter(JRExporterParameter.HYPERLINK_PRODUCER_FACTORY, hyperlinkProducerFactory);
            }

            /*
             * Future enhancement
             * 
             *             JRExporter exporter = (providedExporterClassName != null)
                   ? defaultExporter(jasperPrint, pageIndex) 
                   : providedExporter(jasperPrint, pageIndex);
                        setParameters(exporter);
            */
            request.setAttribute("exporter", exporter);

            boolean isComponentMetadataEmbedded = WebUtil.getInstance(jasperReportsContext)
                    .isComponentMetadataEmbedded();
            request.setAttribute("isComponentMetadataEmbedded", isComponentMetadataEmbedded);
            if (isComponentMetadataEmbedded) {
                JsonExporter jsonExporter = new JsonExporter(jasperReportsContext);
                jsonExporter.setReportContext(webflowReportContext);
                jsonExporter.setParameter(JRExporterParameter.JASPER_PRINT, printAccessor.getJasperPrint());
                request.setAttribute("jsonExporter", jsonExporter);
            }

            // set report status on response header
            LinkedHashMap<String, Object> result = new LinkedHashMap<String, Object>();
            result.put("reportStatus", reportStatus.getStatus().toString().toLowerCase());
            result.put("totalPages", reportStatus.getTotalPageCount());
            result.put("partialPageCount", reportStatus.getCurrentPageCount());
            result.put("pageFinal", pageStatus.isPageFinal());
            result.put("contextid", webflowReportContext.getId());
            result.put("isComponentMetadataEmbedded", isComponentMetadataEmbedded);
            result.put("jasperPrintName", request.getAttribute("jasperPrintName"));
            if (!pageStatus.isPageFinal()) {
                result.put("pageTimestamp", String.valueOf(pageStatus.getTimestamp()));
            }

            String defaultZoomProperty = printAccessor.getJasperPrint()
                    .getProperty("net.sf.jasperreports.viewer.zoom"); // FIXME: use constant
            if (defaultZoomProperty != null) {
                ZoomTypeEnum zoomType = ZoomTypeEnum.getByName(defaultZoomProperty);
                result.put("defaultZoom", zoomType != null ? zoomType.getHtmlValue() : defaultZoomProperty);
            }

            response.setHeader("jasperreports-report-status",
                    JacksonUtil.getInstance(jasperReportsContext).getJsonString(result));
        }

        BodyContent nestedContent = pageContext.pushBody();
        boolean popped = false;
        try {
            pageContext.include(getRenderJsp());
            popped = true;
            pageContext.popBody();
            nestedContent.writeOut(pageContext.getOut());
        } finally {
            if (!popped) {
                pageContext.popBody();
            }
        }

    } catch (Exception e) {
        if (e instanceof SessionAttribMissingException) {
            throw new SessionAttribMissingException(e.getMessage(),
                    ((SessionAttribMissingException) e).getArgs());
        } else {
            throw new JspException(e);
        }
    }

    return EVAL_PAGE;
}