ExtJS + Struts2 做文件上传时,当文件上传成功后,却弹出了下载框

ustbzhangwei 2009-04-20 01:12:58
各位,小弟在用ExtJS + Struts2 做文件上传时,当文件上传成功后,却弹出了下载框,我已经将后台response的contentType改为了text/html;charset=utf-8,却仍然弹出下来框,而Ext里提交后的回调函数却不能响应,为什么呢?
...全文
2548 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
行者歌途 2012-06-18
  • 打赏
  • 举报
回复
response.getWriter().print("{success:true,msg:'成功'}");
行者歌途 2012-06-18
  • 打赏
  • 举报
回复
response.getWriter().print("{page:{limit: 10,start: 0,total: 35},success:true,msg:'成功'}"); java代码中加入这个
cosmic-bo 2010-06-10
  • 打赏
  • 举报
回复
//class Action
public void uploud(){
String relues="";

try {
relues="{success:true}";

} catch (Exception e) {

e.printStackTrace();

relues="{success:false}";

}

}
向阳361 2010-05-21
  • 打赏
  • 举报
回复
我也出了这个是问题,用了10楼的方法:action配置中不能配置NONE对应的result,
这样提交后确实可以执行form提交后的回调函数,不会弹出下载对话框,但是action将不被序列化,返回值的回调中alert(action.result)为空
不是我想要的结果,我想要处理序列化后的action数据
PangSir 2010-01-04
  • 打赏
  • 举报
回复
还是没有解决~~
winky_850823 2009-09-03
  • 打赏
  • 举报
回复
action的最后返回,一定要是
return NONE;
这样就解决问题了
ustbzhangwei 2009-04-22
  • 打赏
  • 举报
回复
<action ...>
<result type="plaintext"/>
</action>

现在 改成这样
<action ...>
<result type="plaintext"/>
</action>

而且加了
ServletActionContext.getResponse().setContentType("text/html");

还是不行,action return后出了错误,似乎是 和<result type="plaintext"/> 有关
2009-04-22 16:23:59,953 ERROR org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:253) Servlet.service() for servlet default threw exception
java.lang.NullPointerException
at java.io.Reader.<init>(Reader.java:61)
at java.io.InputStreamReader.<init>(InputStreamReader.java:55)
at org.apache.struts2.dispatcher.PlainTextResult.doExecute(PlainTextResult.java:148)
at org.apache.struts2.dispatcher.StrutsResultSupport.execute(StrutsResultSupport.java:178)
at com.opensymphony.xwork2.DefaultActionInvocation.executeResult(DefaultActionInvocation.java:348)
at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
stworthy 2009-04-22
  • 打赏
  • 举报
回复
把你的服务端的输出ContentType设成text/html,不要设成application/json
ustbzhangwei 2009-04-22
  • 打赏
  • 举报
回复
先谢谢楼上的兄弟们

ext js 代码如下:
var upFileField = new Ext.form.TextField({
fieldLabel : '文件全路径',
// emptyText: '请选中要上传的附件',
allowBlank : false,
// minLength: 1,
width : 350,
cls : 'x-form-file x-form-field-wrap x-form-file-wrap x-form-file-text',
name : 'photo',
inputType : 'file',
msgTarget : 'under'// 验证错误信息显示地点,加上这个属性,才会有验证效果
});
var msg = function(title, msg) {
Ext.Msg.show({
title : title,
msg : msg,
minWidth : 200,
modal : true,
icon : Ext.Msg.INFO,
buttons : Ext.Msg.OK
});
};
var fp = new Ext.FormPanel({
fileUpload : true,
frame : true,
title : 'File Upload Form',
autoHeight : true,
bodyStyle : 'padding: 10px 10px 0 10px;',
labelWidth : 200,
url : 'importStudent.action',
defaults : {
anchor : '95%',
allowBlank : false
// ,
// msgTarget : 'side'
},
items : [{
xtype : 'fileuploadfield',
emptyText : '选择Excel文件',
fieldLabel : '学生文件(Excel)',
name : 'photo'
}],
buttons : [{
text : 'Import',
handler : function() {
if (fp.getForm().isValid()) {
fp.getForm().submit({
method : 'POST',

// url : 'loadAllStudent.action',
waitMsg : 'Uploading your photo...',
success : function(form, action) {
alert("success");
},
failure : function(form, action) {
alert("failure");
msg('Fail', action.result.message);
}
});
}
}
}, {
text : 'Reset',
handler : function() {
fp.getForm().reset();
}
}]
});


firebug没有发现错误,

(server端用的是java+json plugin)server端运行结果与期望基本相符
唯独在server返回json结果时,没有回调success or failure函数,导致ext js 进度条不能停止
success : function(form, action) {
alert("success");
},
failure : function(form, action) {
alert("failure");
msg('Fail', action.result.message);
}
却弹出下载菜单
下载后,发现json也没什么问题
xiaojing7 2009-04-22
  • 打赏
  • 举报
回复
这样看不到你的完整代码不好猜测bug 的可能性
街头小贩 2009-04-22
  • 打赏
  • 举报
回复
Firefox+firebug跟踪一下请求
ustbzhangwei 2009-04-22
  • 打赏
  • 举报
回复
请指教
ustbzhangwei 2009-04-21
  • 打赏
  • 举报
回复
请指教
ustbzhangwei 2009-04-20
  • 打赏
  • 举报
回复
顶,请指教

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧