struts-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Alireza Fattahi (JIRA)" <>
Subject [jira] [Created] (WW-4559) Define a bean of in Spring makes the Struts stream result not work
Date Tue, 03 Nov 2015 07:38:27 GMT
Alireza Fattahi created WW-4559:

             Summary: Define a bean of in Spring makes the Struts
stream result not work
                 Key: WW-4559
             Project: Struts 2
          Issue Type: Bug
          Components: Dispatch Filter
            Reporter: Alireza Fattahi
             Fix For: 2.3.x

In a strust2 + Spring 4 project

Consider a simple action with stream result 
@Action(value = "sample-export", 
        results = { @Result(name = "success", type = "stream", params = {
        "inputName", "exportInputStream", "contentType",
        "${exportContentType}; charset=UTF-8", "Content-Disposition",
        "attachment; filename=\"${filename}\"", "contentDisposition",
        "attachment; filename=\"${filename}\"", "bufferSize", "2048" }) })
public String export() throws ClientException {
    //buildExportInputStream() creates and returns new ByteArrayOutputStream by using jasper
    exportInputStream = buildExportInputStream();
    LOG.debug("Exporting to {} file ", getFilename());

    return SUCCESS;


This works fine,

Now define a bean 
 <bean id="sampleStream" class="" >
        <constructor-arg  value="c:/sample.jks"/>  
The export will not work correctly any more, first time you get the c:/sample.jks as file
and then an  error which same stream already closed.

I have found that the sampleStream will be autowired to org.apache.struts2.dispatcher.StreamResult
and I see this log:
{panel:title=My Title|borderStyle=dashed|borderColor=#ccc|titleBGColor=#F7D6C1|bgColor=#FFFFCE}
DEBUG ort.DefaultListableBeanFactory Returning cached instance of singleton bean 'sampleStream'
DEBUG ort.DefaultListableBeanFactory Autowiring by type from bean name 'org.apache.struts2.dispatcher.StreamResult'
via constructor to bean named 'sampleStream'
This mistaken autowired is the source of problem ! Is there any workaround. And by the way,
why the sampleStream is autowired here !

This message was sent by Atlassian JIRA

View raw message