个人对ext+struts2 上传文件的一些总结(转http://xietingfengsxm.blog.163.com/blog/static/994118)...

javascript 2010-08-10 19:14:44 阅读48 评论1 字号:大中小 订阅
前两天做了个ext+struts2表单上传文件的提交,提交没问题,提交后的参数返回出了问题,灰常灰常郁闷,发帖,查资料,最后成功,把一些东西总结一下,写的不好,不对,大家指正。
ext关键代码:
var addForm = new Ext.form.FormPanel(
{
id:'addForm',
baseCls: 'x-plain',
labelWidth: 75,
fileUpload: true,
method:'POST',
enctype:'multipart/form-data',
//文件上传的话要这两句
/**
*
*这里省略一些其他表单配置
*按钮配置也省略
**/
//最后服务器返回信息处理
success:function(form,action){
Ext.MessageBox.alert("Message", "Success");
},
failture:function(form,action){
Ext.MessageBox.alert("Error", "Failture");
}
如果后台有执行到,但是页面无任何反应,那肯定是action的配置出了问题。首先配置有两种,一种是继承struts-default,另外一种是json-default.
如果用struts-default,有两种方案。配置多个result
即多个html/jsp页面, <result name="sucess">/suss.html </result>,
<result name="fail">/fail.html </result>, <result name="...">/... </result>
java代码处理业务,根据异常来决定跳到哪个页面,
如写文件失败,return "writefalse";
<result name="writefalse">/writefalse.html </result>
writefalse.html的内容只能是json格式的数据,{"success:false,info:写文件失败"}
这样页面的ext就会进入
failture:function(form,action){
Ext.MessageBox.alert("Error", "Failture");
}
你在方法里取值action.result.info,内容就是 "写文件失败".
依次类推,成功页面suss.html的页面内容是{"success:true,info:成功"}
ext这个回调机制是检查返回参数是否有success键,并且它的值是true,就会调用
success:function(form,action){
},
其他{"success:false,info:asdadsad"},{"failture:true,info:asdad"}都是调用failture。即只要没有success:true,那么其他状况都将进入failtur方法。
struts-default的第二个方案是用response来传递参数。这个比较搞,resp.getWriter().write()的时候,不要忘了"[","]",不然解析不到......
错误:"{'success:true,info:asdad'}"
正确:"[{'success:true,info:asdad'}]"
另外是用jsondefault(推荐)使用,其他配置就不多说了,主要会碰到的情况,页面有响应,但是直接提示下载文件。这个时候,要在struts配置里添加一项param 把ContentType设为text/html,就不会出现下载页了。
然后用json返回的时候,也碰到了一个很搞的问题。
我们用json,一般定义一个
Map[] results =new Map[length](不要忘了get方法,不然前台取不到),
然后把我们的map元素一个个放进result里,然后返回。
但是到了表单这里,行不通,不能再返回一个Map数组,只能返回单个Map
Map results =new HashMap();
results .put("success","true");
results .put("info","sadad");
return SUCCESS;就可以了
如果
Map[] results =new HashMap[1];
Map map = new HashMap();
map.put("success","true");
map.put("info","sadad");
results[0]=map;
return SUCCESS;
这样页面就无法解析了,这里感觉有点整合的死了。
一些关键的东西,其实都能在ext的api里找到,多看api是关键。
与大家共勉,错误之处大家修正。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值