Example usage for javax.servlet.jsp JspTagException JspTagException

List of usage examples for javax.servlet.jsp JspTagException JspTagException

Introduction

In this page you can find the example usage for javax.servlet.jsp JspTagException JspTagException.

Prototype


public JspTagException(Throwable rootCause) 

Source Link

Document

Constructs a new JSP Tag exception when the JSP Tag needs to throw an exception and include a message about the "root cause" exception that interfered with its normal operation.

Usage

From source file:org.displaytag.tags.TableTag.java

/**
 * Will write the export. The default behavior is to write directly to the response. If the ResponseOverrideFilter
 * is configured for this request, will instead write the exported content to a map in the Request object.
 * /*from   w w w  .  j  a va2  s  .  c  o m*/
 * @param exportView export view
 * @throws JspException for problem in clearing the response or for invalid export views
 * @throws IOException exception thrown when writing content to the response
 */
protected void writeExport(ExportView exportView) throws IOException, JspException {
    String filename = this.properties.getExportFileName(this.currentMediaType);

    HttpServletResponse response = (HttpServletResponse) this.pageContext.getResponse();
    HttpServletRequest request = (HttpServletRequest) this.pageContext.getRequest();

    Map bean = (Map) request.getAttribute(FILTER_CONTENT_OVERRIDE_BODY);
    boolean usingFilter = bean != null;

    String mimeType = exportView.getMimeType();
    // original encoding, be sure to add it back after reset()
    String characterEncoding = response.getCharacterEncoding();

    if (usingFilter) {
        if (!bean.containsKey(TableTagParameters.BEAN_BUFFER)) {
            // We are running under the export filter, call it
            log.debug("Exportfilter enabled in unbuffered mode, setting headers");
            response.addHeader(TableTagParameters.PARAMETER_EXPORTING, TagConstants.EMPTY_STRING);
        } else {
            // We are running under the export filter in buffered mode
            bean.put(TableTagParameters.BEAN_CONTENTTYPE, mimeType);
            bean.put(TableTagParameters.BEAN_FILENAME, filename);

            if (exportView instanceof TextExportView) {
                StringWriter writer = new StringWriter();
                ((TextExportView) exportView).doExport(writer);
                bean.put(TableTagParameters.BEAN_BODY, writer.toString());
            } else if (exportView instanceof BinaryExportView) {
                ByteArrayOutputStream stream = new ByteArrayOutputStream();
                ((BinaryExportView) exportView).doExport(stream);
                bean.put(TableTagParameters.BEAN_BODY, stream.toByteArray());

            } else {
                throw new JspTagException("Export view " + exportView.getClass().getName()
                        + " must implement TextExportView or BinaryExportView");
            }

            return;
        }
    } else {
        log.debug("Exportfilter NOT enabled");
        // response can't be already committed at this time
        if (response.isCommitted()) {
            throw new ExportException(this.getClass());
        }

        try {
            response.reset();
            this.pageContext.getOut().clearBuffer();
        } catch (Exception e) {
            throw new ExportException(this.getClass());
        }
    }

    if (!usingFilter && characterEncoding != null && mimeType.indexOf("charset") == -1) //$NON-NLS-1$
    {
        mimeType += "; charset=" + characterEncoding; //$NON-NLS-1$
    }

    response.setContentType(mimeType);

    if (StringUtils.isNotEmpty(filename)) {
        response.setHeader("Content-Disposition", //$NON-NLS-1$
                "attachment; filename=\"" + filename + "\""); //$NON-NLS-1$ //$NON-NLS-2$
    }

    if (exportView instanceof TextExportView) {
        Writer writer;
        if (usingFilter) {
            writer = response.getWriter();
        } else {
            writer = this.pageContext.getOut();
        }

        ((TextExportView) exportView).doExport(writer);
    } else if (exportView instanceof BinaryExportView) {
        // dealing with binary content
        // note that this is not assured to work on any application server
        // if the filter is not enabled. According
        // to the jsp specs response.getOutputStream() should no be called
        // in jsps.
        ((BinaryExportView) exportView).doExport(response.getOutputStream());
    } else {
        throw new JspTagException("Export view " + exportView.getClass().getName()
                + " must implement TextExportView or BinaryExportView");
    }

    log.debug("Export completed");

}

From source file:org.rhq.enterprise.gui.legacy.taglib.display.TableTag.java

/**
 * Use the jstl expression expression language to evaluate a field.
 *
 * @param  name//from w w  w  .j  ava2 s.c o m
 * @param  value
 * @param  type  The Class type of the object you expect.
 *
 * @return The object found
 *
 * @throws NullAttributeException Thrown if the value is null.
 */
private Object evalAttr(String name, String value, Class type) throws JspTagException {
    try {
        return ExpressionUtil.evalNotNull("display", name, value, type, this, pageContext);
    } catch (NullAttributeException ne) {
        throw new JspTagException("Attribute " + name + " not found in TableTag");
    } catch (JspException je) {
        throw new JspTagException(je.toString());
    }
}