Class StreamResult

java.lang.Object
org.apache.struts2.result.StrutsResultSupport
org.apache.struts2.result.StreamResult
All Implemented Interfaces:
Serializable, Result, StrutsStatics

public class StreamResult extends StrutsResultSupport
A custom Result type for sending raw data (via an InputStream) directly to the HttpServletResponse. Very useful for allowing users to download content. This result type takes the following parameters:
  • contentType - the stream mime-type as sent to the web browser (default = text/plain).
  • contentLength - the stream length in bytes (the browser displays a progress bar).
  • contentDisposition - the content disposition header value for specifing the file name (default = inline, values are typically attachment;filename="document.pdf".
  • inputName - the name of the InputStream property from the chained action (default = inputStream).
  • bufferSize - the size of the buffer to copy from input to output (default = 1024).
  • allowCaching if set to 'false' it will set the headers 'Pragma' and 'Cache-Control' to 'no-cache', and prevent client from caching the content. (default = true)
  • contentCharSet if set to a string, ';charset=value' will be added to the content-type header, where value is the string set. If set to an expression, the result of evaluating the expression will be used. If not set, then no charset will be set on the header

These parameters can also be set by exposing a similarly named getter method on your Action. For example, you can provide getContentType() to override that parameter for the current action.

Example:
 <result name="success" type="stream">
   <param name="contentType">image/jpeg</param>
   <param name="inputName">imageStream</param>
   <param name="contentDisposition">attachment;filename="document.pdf"</param>
   <param name="bufferSize">1024</param>
 </result>
 
See Also:
  • Field Details

    • LOG

      protected static final org.apache.logging.log4j.Logger LOG
    • DEFAULT_PARAM

      public static final String DEFAULT_PARAM
      See Also:
    • contentType

      protected String contentType
    • contentLength

      protected String contentLength
    • contentDisposition

      protected String contentDisposition
    • contentCharSet

      protected String contentCharSet
    • inputName

      protected String inputName
    • inputStream

      protected InputStream inputStream
    • bufferSize

      protected int bufferSize
    • allowCaching

      protected boolean allowCaching
  • Constructor Details

    • StreamResult

      public StreamResult()
    • StreamResult

      public StreamResult(InputStream in)
  • Method Details

    • setNotExcludedAcceptedPatterns

      public void setNotExcludedAcceptedPatterns(NotExcludedAcceptedPatternsChecker notExcludedAcceptedPatterns)
    • getAllowCaching

      public boolean getAllowCaching()
      Returns:
      Returns the whether or not the client should be requested to allow caching of the data stream.
    • setAllowCaching

      public void setAllowCaching(boolean allowCaching)
      Set allowCaching to false to indicate that the client should be requested not to cache the data stream. This is set to false by default
      Parameters:
      allowCaching - Enable caching.
    • getBufferSize

      public int getBufferSize()
      Returns:
      Returns the bufferSize.
    • setBufferSize

      public void setBufferSize(int bufferSize)
      Parameters:
      bufferSize - The bufferSize to set.
    • getContentType

      public String getContentType()
      Returns:
      Returns the contentType.
    • setContentType

      public void setContentType(String contentType)
      Parameters:
      contentType - The contentType to set.
    • getContentLength

      public String getContentLength()
      Returns:
      Returns the contentLength.
    • setContentLength

      public void setContentLength(String contentLength)
      Parameters:
      contentLength - The contentLength to set.
    • getContentDisposition

      public String getContentDisposition()
      Returns:
      Returns the Content-disposition header value.
    • setContentDisposition

      public void setContentDisposition(String contentDisposition)
      Parameters:
      contentDisposition - the Content-disposition header value to use.
    • getContentCharSet

      public String getContentCharSet()
      Returns:
      Returns the charset specified by the user
    • setContentCharSet

      public void setContentCharSet(String contentCharSet)
      Parameters:
      contentCharSet - the charset to use on the header when sending the stream
    • getInputName

      public String getInputName()
      Returns:
      Returns the inputName.
    • setInputName

      public void setInputName(String inputName)
      Parameters:
      inputName - The inputName to set.
    • doExecute

      protected void doExecute(String finalLocation, ActionInvocation invocation) throws Exception
      Description copied from class: StrutsResultSupport
      Executes the result given a final location (jsp page, action, etc) and the action invocation (the state in which the action was executed). Subclasses must implement this class to handle custom logic for result handling.
      Specified by:
      doExecute in class StrutsResultSupport
      Parameters:
      finalLocation - the location (jsp page, action, etc) to go to.
      invocation - the execution state of the action.
      Throws:
      Exception - if an error occurs while executing the result.
      See Also:
    • isAcceptableExpression

      protected boolean isAcceptableExpression(String expression)
      Checks if expression doesn't contain vulnerable code
      Parameters:
      expression - of result
      Returns:
      true|false
      Since:
      6.0.0