2015-01-08 16 views
1

我在應用程序中使用Struts2。我需要下載excel文件(.xlsx和.xls格式)。這是在IE瀏覽器工作正常,但在Chrome它顯示錯誤使用Struts2從服務器接收到的重複標題

「從服務器接收重複的標題」

我的文件名(「<文件名」)之前使用引號。它仍然沒有在鉻合金工作。以下是我的應用程序中使用的代碼片段。

struts.xml的

<action name="*Excel" method="{1}" class="ReportUtilityAction"> 
    <result name="success" type="stream"> 
     <param name="contentType">application/vnd.ms-excel</param> 
     <param name="inputName">fileInputStream</param> 
     <param name="bufferSize">1024</param> 
    </result> 
</action> 

我已經在動作類中提到的內容部署爲

static final private String Content = "Content-Disposition"; 

HttpServletResponse response = this.getHttpResponse(); 
response.setHeader(Content, "attachment;filename='Export.xlsx';"); 
+0

如果您正在使用'stream'結果,然後使用它來設置內容處置標題。 –

+0

@AleksandrM我已經通過操作類使用了內容處置。這是你要求我嘗試的嗎?我無法得到你。你能詳細解釋一下嗎? – Anju

+0

'stream'結果已經設置了這個頭文件,並且您正在添加另一個頭文件,因此出現此錯誤。閱讀關於'stream'結果的文檔。 –

回答

1

你可以在你設置了其它頭以同樣的方式設置contentDisposition:在支柱配置。

<result name="success" type="stream"> 
    <param name="contentDisposition">attachment;filename="Export.xlsx";</param> 
    <param name="contentType">application/vnd.ms-excel</param> 
    <param name="inputName">fileInputStream</param> 
    <param name="bufferSize">1024</param> 
</result> 

也可以有它的參數,通過使用${}符號,與在操作的相應的吸氣劑:

<param name="contentDisposition">attachment;filename="${filename}";</param> 
public String getFilename(){ ... } 
+0

我試過了。我仍然在鉻 – Anju

+0

得到相同的錯誤您顯然需要刪除'response.setHeader(內容,「附件;文件名='Export.xlsx';」);'部分從您的行動 –

+0

是的,我刪除它。 – Anju

0

錯誤意味着,報頭字段被設置兩次;您應該能夠在HTTP跟蹤中看到。因此你需要找出爲什麼它被設置了兩次。