org.springframework.web.servlet.view.jasperreports

## Class AbstractJasperReportsSingleFormatView

- java.lang.Object
- - org.springframework.context.support.ApplicationObjectSupport
  - - org.springframework.web.context.support.WebApplicationObjectSupport
    - - org.springframework.web.servlet.view.AbstractView
      - - org.springframework.web.servlet.view.AbstractUrlBasedView
        - - org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView
          - - org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsSingleFormatView

- All Implemented Interfaces:
    Aware, BeanNameAware, InitializingBean, ApplicationContextAware, ServletContextAware, View
  Direct Known Subclasses:
    ConfigurableJasperReportsView, JasperReportsCsvView, JasperReportsHtmlView, JasperReportsPdfView, JasperReportsXlsView

      public abstract class AbstractJasperReportsSingleFormatView
      extends AbstractJasperReportsView

  Extends `AbstractJasperReportsView` to provide basic rendering logic for views that use a fixed format, e.g. always PDF or always HTML.

  Subclasses need to implement two template methods: `createExporter` to create a JasperReports exporter for a specific output format, and `useWriter` to determine whether to write text or binary content.

  Since:
    1.1.5
  Author:
    Rob Harrop, Juergen Hoeller
  See Also:
    `createExporter()`, `useWriter()`

- - ### Field Summary

    - ### Fields inherited from class org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView

      `CONTENT_DISPOSITION_INLINE, HEADER_CONTENT_DISPOSITION`

    - ### Fields inherited from class org.springframework.web.servlet.view.AbstractView

      `DEFAULT_CONTENT_TYPE`

    - ### Fields inherited from class org.springframework.context.support.ApplicationObjectSupport

      `logger`

    - ### Fields inherited from interface org.springframework.web.servlet.View

      `PATH_VARIABLES, RESPONSE_STATUS_ATTRIBUTE, SELECTED_CONTENT_TYPE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `AbstractJasperReportsSingleFormatView()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected abstract net.sf.jasperreports.engine.JRExporter` | `createExporter()` Create a JasperReports exporter for a specific output format, which will be used to render the report to the HTTP response.
    `protected boolean` | `generatesDownloadContent()` Return whether this view generates download content (typically binary content like PDF or Excel files).
    `protected void` | `renderReport(net.sf.jasperreports.engine.JasperPrint populatedReport, Map<String,Object> model, HttpServletResponse response)` Perform rendering for a single Jasper Reports exporter, that is, for a pre-defined output format.
    `protected void` | `renderReportUsingOutputStream(net.sf.jasperreports.engine.JRExporter exporter, net.sf.jasperreports.engine.JasperPrint populatedReport, HttpServletResponse response)` We need to write binary output to the response OutputStream.
    `protected void` | `renderReportUsingWriter(net.sf.jasperreports.engine.JRExporter exporter, net.sf.jasperreports.engine.JasperPrint populatedReport, HttpServletResponse response)` We need to write text to the response Writer.
    `protected abstract boolean` | `useWriter()` Return whether to use a `java.io.Writer` to write text content to the HTTP response.

    - ### Methods inherited from class org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView

      `convertExporterParameters, convertParameterValue, convertReportData, convertToExporterParameter, createReport, exposeLocalizationContext, fillReport, getConvertedExporterParameters, getExporterParameter, getExporterParameters, getJdbcDataSource, getReport, getReportData, getReportDataTypes, initApplicationContext, isUrlRequired, loadReport, loadReport, onInit, postProcessReport, renderMergedOutputModel, setConvertedExporterParameters, setExporterParameters, setHeaders, setJdbcDataSource, setReportDataKey, setSubReportDataKeys, setSubReportUrls`

    - ### Methods inherited from class org.springframework.web.servlet.view.AbstractUrlBasedView

      `afterPropertiesSet, checkResource, getUrl, setUrl, toString`

    - ### Methods inherited from class org.springframework.web.servlet.view.AbstractView

      `addStaticAttribute, createMergedOutputModel, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getStaticAttributes, isExposePathVariables, prepareResponse, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setExposePathVariables, setRequestContextAttribute, setResponseContentType, writeToResponse`

    - ### Methods inherited from class org.springframework.web.context.support.WebApplicationObjectSupport

      `getServletContext, getTempDir, getWebApplicationContext, initApplicationContext, initServletContext, isContextRequired, setServletContext`

    - ### Methods inherited from class org.springframework.context.support.ApplicationObjectSupport

      `getApplicationContext, getMessageSourceAccessor, requiredContextClass, setApplicationContext`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- - ### Constructor Detail

    - #### AbstractJasperReportsSingleFormatView

          public AbstractJasperReportsSingleFormatView()

  - ### Method Detail

    - #### generatesDownloadContent

          protected boolean generatesDownloadContent()

      Description copied from class: `AbstractView`
      Return whether this view generates download content (typically binary content like PDF or Excel files).

      The default implementation returns `false`. Subclasses are encouraged to return `true` here if they know that they are generating download content that requires temporary caching on the client side, typically via the response OutputStream.

      Overrides:
        `generatesDownloadContent` in class `AbstractView`
      See Also:
        `AbstractView.prepareResponse(javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)`, `ServletResponse.getOutputStream()`

    - #### renderReport

          protected void renderReport(net.sf.jasperreports.engine.JasperPrint populatedReport,
                          Map<String,Object> model,
                          HttpServletResponse response)
                               throws Exception

      Perform rendering for a single Jasper Reports exporter, that is, for a pre-defined output format.
      Specified by:
        `renderReport` in class `AbstractJasperReportsView`
      Parameters:
        `populatedReport` - the populated `JasperPrint` to render
        `model` - the map containing report parameters
        `response` - the HTTP response the report should be rendered to
      Throws:
        `Exception` - if rendering failed
      See Also:
        `AbstractView.getContentType()`, `ServletResponse.setContentType(java.lang.String)`, `ServletResponse.setCharacterEncoding(java.lang.String)`

    - #### renderReportUsingWriter

          protected void renderReportUsingWriter(net.sf.jasperreports.engine.JRExporter exporter,
                                     net.sf.jasperreports.engine.JasperPrint populatedReport,
                                     HttpServletResponse response)
                                          throws Exception

      We need to write text to the response Writer.
      Parameters:
        `exporter` - the JasperReports exporter to use
        `populatedReport` - the populated `JasperPrint` to render
        `response` - the HTTP response the report should be rendered to
      Throws:
        `Exception` - if rendering failed

    - #### renderReportUsingOutputStream

          protected void renderReportUsingOutputStream(net.sf.jasperreports.engine.JRExporter exporter,
                                           net.sf.jasperreports.engine.JasperPrint populatedReport,
                                           HttpServletResponse response)
                                                throws Exception

      We need to write binary output to the response OutputStream.
      Parameters:
        `exporter` - the JasperReports exporter to use
        `populatedReport` - the populated `JasperPrint` to render
        `response` - the HTTP response the report should be rendered to
      Throws:
        `Exception` - if rendering failed

    - #### createExporter

          protected abstract net.sf.jasperreports.engine.JRExporter createExporter()

      Create a JasperReports exporter for a specific output format, which will be used to render the report to the HTTP response.

      The `useWriter` method determines whether the output will be written as text or as binary content.

      See Also:
        `useWriter()`

    - #### useWriter

          protected abstract boolean useWriter()

      Return whether to use a `java.io.Writer` to write text content to the HTTP response. Else, a `java.io.OutputStream` will be used, to write binary content to the response.
      See Also:
        `ServletResponse.getWriter()`, `ServletResponse.getOutputStream()`