org.springframework.web.servlet.view.jasperreports
Class JasperReportsMultiFormatView

java.lang.Object
  extended by org.springframework.context.support.ApplicationObjectSupport
      extended by org.springframework.web.context.support.WebApplicationObjectSupport
          extended by org.springframework.web.servlet.view.AbstractView
              extended by org.springframework.web.servlet.view.AbstractUrlBasedView
                  extended by org.springframework.web.servlet.view.jasperreports.AbstractJasperReportsView
                      extended by org.springframework.web.servlet.view.jasperreports.JasperReportsMultiFormatView
All Implemented Interfaces:
BeanNameAware, InitializingBean, ApplicationContextAware, ServletContextAware, View

public class JasperReportsMultiFormatView
extends AbstractJasperReportsView

Jasper Reports view class that allows for the actual rendering format to be specified at runtime using a parameter contained in the model.

This view works on the concept of a format key and a mapping key. The format key is used to pass the mapping key from your Controller to Spring through as part of the model and the mapping key is used to map a logical format to an actual JasperReports view class. For example you might add the following code to your Controller:

 Map model = new HashMap();
 model.put("format", "pdf");
Here format is the format key and pdf is the mapping key. When rendering a report, this class looks for a model parameter under the format key, which by default is format. It then uses the value of this parameter to lookup the actual View class to use. The default mappings for this lookup are:

The format key can be changed using the formatKey property and the mapping key to view class mappings can be changed using the formatMappings property.

Since:
1.1.5
Author:
Rob Harrop, Juergen Hoeller
See Also:
setFormatKey(java.lang.String), setFormatMappings(java.util.Map)

Field Summary
static java.lang.String DEFAULT_FORMAT_KEY
          Default value used for format key: "format"
 
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
 
Constructor Summary
JasperReportsMultiFormatView()
          Creates a new JasperReportsMultiFormatView instance with a default set of mappings.
 
Method Summary
protected  boolean generatesDownloadContent()
          Return whether this view generates download content (typically binary content like PDF or Excel files).
 java.util.Properties getContentDispositionMappings()
          Return the mappings of Content-Disposition header values to mapping keys.
protected  void renderReport(net.sf.jasperreports.engine.JasperPrint populatedReport, java.util.Map<java.lang.String,java.lang.Object> model, javax.servlet.http.HttpServletResponse response)
          Locates the format key in the model using the configured discriminator key and uses this key to lookup the appropriate view class from the mappings.
 void setContentDispositionMappings(java.util.Properties mappings)
          Set the mappings of Content-Disposition header values to mapping keys.
 void setFormatKey(java.lang.String formatKey)
          Set the key of the model parameter that holds the format discriminator.
 void setFormatMappings(java.util.Map<java.lang.String,java.lang.Class> formatMappings)
          Set the mappings of format discriminators to view class names.
 
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, setExporterParameters, setHeaders, setJdbcDataSource, setReportDataKey, setSubReportDataKeys, setSubReportUrls
 
Methods inherited from class org.springframework.web.servlet.view.AbstractUrlBasedView
afterPropertiesSet, getUrl, setUrl, toString
 
Methods inherited from class org.springframework.web.servlet.view.AbstractView
addStaticAttribute, createRequestContext, createTemporaryOutputStream, exposeModelAsRequestAttributes, getAttributesMap, getBeanName, getContentType, getRequestContextAttribute, getStaticAttributes, prepareResponse, render, setAttributes, setAttributesCSV, setAttributesMap, setBeanName, setContentType, setRequestContextAttribute, 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
 

Field Detail

DEFAULT_FORMAT_KEY

public static final java.lang.String DEFAULT_FORMAT_KEY
Default value used for format key: "format"

See Also:
Constant Field Values
Constructor Detail

JasperReportsMultiFormatView

public JasperReportsMultiFormatView()
Creates a new JasperReportsMultiFormatView instance with a default set of mappings.

Method Detail

setFormatKey

public void setFormatKey(java.lang.String formatKey)
Set the key of the model parameter that holds the format discriminator. Default is "format".


setFormatMappings

public void setFormatMappings(java.util.Map<java.lang.String,java.lang.Class> formatMappings)
Set the mappings of format discriminators to view class names. The default mappings are:


setContentDispositionMappings

public void setContentDispositionMappings(java.util.Properties mappings)
Set the mappings of Content-Disposition header values to mapping keys. If specified, Spring will look at these mappings to determine the value of the Content-Disposition header for a given format mapping.


getContentDispositionMappings

public java.util.Properties getContentDispositionMappings()
Return the mappings of Content-Disposition header values to mapping keys. Mainly available for configuration through property paths that specify individual keys.


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,
                            java.util.Map<java.lang.String,java.lang.Object> model,
                            javax.servlet.http.HttpServletResponse response)
                     throws java.lang.Exception
Locates the format key in the model using the configured discriminator key and uses this key to lookup the appropriate view class from the mappings. The rendering of the report is then delegated to an instance of that view class.

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:
java.lang.Exception - if rendering failed
See Also:
AbstractView.getContentType(), ServletResponse.setContentType(java.lang.String), ServletResponse.setCharacterEncoding(java.lang.String)