Package org.apache.struts2.result

# 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:
  - Serialized Form

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected boolean`
  `allowCaching`
  `protected int`
  `bufferSize`
  `protected String`
  `contentCharSet`
  `protected String`
  `contentDisposition`
  `protected String`
  `contentLength`
  `protected String`
  `contentType`
  `static final String`
  `DEFAULT_PARAM`
  `protected String`
  `inputName`
  `protected InputStream`
  `inputStream`
  `protected static final org.apache.logging.log4j.Logger`
  `LOG`

  ### Fields inherited from class org.apache.struts2.result.StrutsResultSupport

  `DEFAULT_URL_ENCODING, parseLocation`

  ### Fields inherited from interface org.apache.struts2.StrutsStatics

  `ACTION_MAPPING, HTTP_REQUEST, HTTP_RESPONSE, PAGE_CONTEXT, SERVLET_CONTEXT, SERVLET_DISPATCHER, STRUTS_ACTION_TAG_INVOCATION`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `StreamResult()`
  `StreamResult(InputStream in)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected void`
  `doExecute(String finalLocation, ActionInvocation invocation)`
  Executes the result given a final location (jsp page, action, etc) and the action invocation (the state in which the action was executed).
  `boolean`
  `getAllowCaching()`
  `int`
  `getBufferSize()`
  `String`
  `getContentCharSet()`
  `String`
  `getContentDisposition()`
  `String`
  `getContentLength()`
  `String`
  `getContentType()`
  `String`
  `getInputName()`
  `protected boolean`
  `isAcceptableExpression(String expression)`
  Checks if expression doesn't contain vulnerable code
  `void`
  `setAllowCaching(boolean allowCaching)`
  Set allowCaching to `false` to indicate that the client should be requested not to cache the data stream.
  `void`
  `setBufferSize(int bufferSize)`
  `void`
  `setContentCharSet(String contentCharSet)`
  `void`
  `setContentDisposition(String contentDisposition)`
  `void`
  `setContentLength(String contentLength)`
  `void`
  `setContentType(String contentType)`
  `void`
  `setInputName(String inputName)`
  `void`
  `setNotExcludedAcceptedPatterns(NotExcludedAcceptedPatternsChecker notExcludedAcceptedPatterns)`

  ### Methods inherited from class org.apache.struts2.result.StrutsResultSupport

  `conditionalParse, conditionalParseCollection, execute, getLastFinalLocation, getLocation, setEncode, setLocation, setParse`

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

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

- ## Field Details

  - ### LOG

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

  - ### DEFAULT_PARAM

    public static final String DEFAULT_PARAM
    See Also:
      - Constant Field Values

  - ### 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:
      - `StrutsResultSupport.doExecute(java.lang.String, ActionInvocation)`

  - ### 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