论坛首页 AJAX版 EXT

由做登录页引申到Form提交(submit)--基于Ext-yui

浏览 5250 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
最后更新时间:2007-09-20 关键字: ext的form提交

首先要感谢 forgetdavi的帖子,http://www.javaeye.com/topic/106163,我是学习了这个帖子之后完成自己的登录页的。

  • Ext的Form提交的处理流程:
  • 本次试验是使用ext-1.1.1\ext-all-debug.js完成的,下面提到的行号就是指此js文件。(下载:http://extjs.com/deploy/ext-1.1.1.zip
  • Form的提交也是使用Ext.Ajax.request来完成的(见23817行)
  • 如果后台的Servlet(或其它类型的服务)处理完成并正确返回后(注意此处的正确是指Http请求)就会跳转到 success : function(response) (见23830行)
  • 在上一步的success:function(response)处理过程中,会执行 processResponse : function(response)(见23755行)
  • 在上一步的processResponse : function(response),会执行this.result = this.handleResponse(response);(见23760行)
  • 在handleResponse : function(response)中(见23843),
    • 如果你给Form.errorReader赋予了值(即给Form注册了"返回值处理器"),那么就会通过这个"返回值处理器",当然返回值必须是与"返回值处理器"相匹配的二维数据。
    • 否则,Ext就会认为你返回的是一段JSon表达式,会通过Ext.decode去执行它(相当于eval(sRtn)) (见23861行),举例:在处理一个登录请求时,服务器返回
      {errors:[{id:'userId',msg:'没有找到此用户!'}]}
      表明返回一个 errors 对象,它的值是一个数组,此数组的第一项又是一个对象,此对象有一个id属性,id属性的值说明出错的表单域是 'userId',它出错的原因是 '没有找到此用户!'.
    • 要注意的是,handleResponse返回的约定又是一个对象,此对象有一个属性"success"(表示后台处理成功),有一个属性"errors"(表示后台处理失败),当然二者都有应该也有可能,表示部分成功,部分失败。上述的"{errors:[{id:'userId',msg:'没有找到此用户!'}]}"可说明问题。
  • 至此,handleResponse 过程处理完成,返回上一层,即 processResponse中(见23760行),handleResponse 继续返回上一层,(见23831行)
  • 如果返回的有success属性,(或就是一个true)(见23831行),则触发Form的afterAction事件.
  • 如果返回的有errors属性(见23836行),则执行form.markInvalid(errors),在markInvalid会解读返回的errors对象“[{id:'userId',msg:'没有找到此用户!'}]”,它就知道:哦,是userId表单域有问题,错误信息是"没有找到此用户!"
  • 效果见下图

 

  • 30520a99-095d-4725-833e-87d4df14e93d-thumb
  • 大小: 39.1 KB
   
最后更新时间:2007-09-18
东西比较好,可惜文件不全
   
0 请登录后投票
最后更新时间:2007-09-18
crabboy 写道
东西比较好,可惜文件不全
关于文件不全的问题:文件全部打包有6M左右,太大。而且我觉得自己一步一步地做一下会理解更好一些
   
0 请登录后投票
最后更新时间:2007-10-14
对不起,我刚入门ext
还是不大明白
simple.addButton('Save', function(){
        simple.submit( {
method:'GET',clientValidation: true,
waitMsg:'...',
success:...,
failure:...
});
    });
这里面具体是怎么运作的,以及我要怎么写才能合适……请教
   
0 请登录后投票
最后更新时间:2007-10-15
呵呵,还行吧,好东西的啊,这么多人都在做这个东西的呢.我还要好好学习一下子才行啊.
   
0 请登录后投票
最后更新时间:2007-10-15
form参数是怎么传递的。
private void doLogin(Properties rProps,HttpServletRequest req,HttpServletResponse res),中的Properties 是怎么过来的
   
0 请登录后投票
最后更新时间:2007-10-31
回wikeup form参数是怎么传递的问题:
当页面把请求发送到后台的Servlet之后,进行以下处理 :
public static Properties readyQryStr(HttpServletRequest request,String charName) {
  String sQryStr = request.getQueryString();
  String[] paras = sQryStr.split("&");
  Properties paraProps = new Properties();
  String pName,pVal=null;
  try {
  for (int i = 0; i < paras.length; i++) {
  String[] subparas = paras[i].split("=");
  if(subparas.length >= 2){
pName = subparas[0];
pVal  = subparas[1];
if(pVal != null){
pVal = URLDecoder.decode(pVal,charName);
}
paraProps.setProperty(pName,pVal);
  }
  }
} catch (Exception e) {
}
  return paraProps;
}

这样做的目的是简化后续工作:1.可以此函数中处理字符转码等工作.2.调用paraProps.getProperty方法比调用req.getParameter方法更方便
   
0 请登录后投票
最后更新时间:2007-11-20
文件不全,放上来干什么啊!
   
0 请登录后投票
最后更新时间:2007-11-26
tiger1199 写道
文件不全,放上来干什么啊!

认真看就知道这些有多有用。
   
0 请登录后投票
最后更新时间:2007-12-02
chxkyy 写道
tiger1199 写道
文件不全,放上来干什么啊!

认真看就知道这些有多有用。
这两个文件已经足够了啊.

不知道楼主有么有试着用dwr来处理?

期待交流.
   
0 请登录后投票
论坛首页 AJAX版 EXT

跳转论坛:
JavaEye推荐