在action中加上
private String applicationTemplateName;
public String getApplicationTemplateName() {
return applicationTemplateName;
}
public void setApplicationTemplateName(String applicationTemplateName) {
this.applicationTemplateName = applicationTemplateName;
}
struts2加上
<result name="download" type="stream">
<param name="contentType">application/msword</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${applicationTemplateName}"</param>
此时如果是中文名会出现下载名为applicationTemplateAction_downLoad.action而不是中文名
于是我在action加上 applicationTemplateName = URLEncoder.encode(applicationTemplate.getName(), "UTF-8")+".doc";就成功了。
也可以不用setter,getter applicationTemplateName
而是在action download方法加上
String applicationTemplateName = URLEncoder.encode(applicationTemplate.getName(), "UTF-8")+".doc";
ActionContext.getContext().put("applicationTemplateName", applicationTemplateName);
struts.xml改成
<result name="download" type="stream">
<param name="contentType">application/msword</param>
<param name="inputName">inputStream</param>
<param name="contentDisposition">attachment;filename="${#applicationTemplateName}"</param>
还有一个要注意的是
URLEncoder.encode而不是Decoder,得出的字符串需要是%832fdsxx等等,而不是原因的中文
可以参考一下网址