使用Struts2从服务器收到的重复标头

时间:2015-01-08 09:05:30

标签: java http struts2 http-headers content-disposition

我在应用程序中使用Struts2。我需要下载excel文件(.xlsx和.xls格式)。这在IE中正常运行,但在Chrome中显示错误

  

"从服务器"

收到的重复标题

我在文件名之前使用引号("<文件名")。仍然没有使用chrome。以下是我的应用程序中使用的代码片段。

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';");

2 个答案:

答案 0 :(得分:1)

您可以像设置其他标头一样设置contentDisposition:在struts配置中。

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

您还可以使用${}表示法对其进行参数化,并在Action中使用相应的getter:

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

答案 1 :(得分:0)

错误意味着标题字段被设置两次;您应该能够在HTTP跟踪中看到它。因此,你需要找出为什么它被设置两次。