我正在尝试从弹出窗口(jquery UI Dialog)中导出excel。我有java类方法,响应类型内容 - 处置附件标题。但是它没有下载excel表。
jQuery("#dialog-form").dialog ({
autoOpen: false,
height: 600,
width: 700,
modal: true,
resizable: false,
draggable: false,
buttons : {
"Export" : function() {
jQuery.ajax({
url : '<s:url action="list" method="export"/>',
});
} });
Java类:
public String export(){
--some backend calls.
httpServletResponse.setHeader("Content-disposition",
"attachment; filename="+filename+".xls");
ServletOutputStream outputStream = httpServletResponse.getOutputStream();
outputStream.flush();
return null;
}
控制台:
No result returned for action at null
请告知为什么这个excel下载不起作用?
答案 0 :(得分:1)
有一些错误:
文件名应该用双引号括起来,如果您想在浏览器中打开而不是下载它,则应使用inline
代替attachment
:
httpServletResponse.setHeader("Content-disposition",
"inline; filename=\""+filename+"\".xls");
您应始终指定contentType
:
httpServletResponse.setContentType(
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
(或application/vnd.ms-excel
旧版Excel文件);
您应该返回NONE
而不是null
(这会导致您的错误)。
那就是说,你真的不需要像Servlet那样使用Action(like instead I had here):
只需使用Stream result ,在ContentType
中设置ContentDisposition
和Struts.xml
,然后将InputStream返回到页面,{ {3}}