日期:2014-05-16  浏览次数:20364 次

Extjs-表单提交 表单验证 表单布局
1.表单提交
1.1ext默认提交形式




[plain] view plaincopy
01.因为FormPanel是布局容器,没有提供submit()函数,所以要先获取它内部包含的BasicForm,才能提交 
02.这个示例中,后台接收数据的脚本是list.jsp,与以前方式相同,唯一的区别就是不再跳转,只需要返回一个JSON字符串提供操作是否成功, 
03.表单默认使用Ajax提交数据,Ajax可以回调,何况表单还封装了自己的处理方式,首先修改submit方法,让它支持更多的功能, 
04.ext.lib.Ajax中,判断究竟是调用了success还是failure的条件与业务无关,如果http响应成功就返回success,如果出现404或者500错误就执行failure 
05.form中的success和failure则是与业务相关的,只有后台响应true或者响应JSON中包含success:true时,才执行success(),failure()比较复杂,如果JSON中success不是true并且JSON中包含errors:{},那么业务错误;如果不包含errors:{}就认为是连接错误,当业务错误时,用 
06.this.failureType = Ext.form.Action.SERVER_INVALID(服务端验证表单错误时返回的错误类型)标记, 
07.可以通过action.failureType进行判断 
代码
list.jsp



[javascript] view plaincopy
01.<%@ page language="java"  pageEncoding="UTF-8"%> 
02.<%    
03.    response.setContentType("text/json; charset=utf-8"); 
04.    request.setCharacterEncoding("UTF-8"); 
05.    response.setCharacterEncoding("UTF-8"); 
06.    String name = request.getParameter("name"); 
07.    String id = request.getParameter("id"); 
08.    String foo = request.getParameter("foo"); 
09.    System.out.println(name); 
10.    System.out.println(id); 
11.    System.out.println(foo); 
12.    if("123".equals(name)){ 
13.        response.getWriter().write("{success:true,msg:'成功'}"); 
14.    }else{ 
15.        response.getWriter().write("{success:false,msg:'失败'}"); 
16.    } 
17.%> 

index.jsp




[javascript] view plaincopy
01.<script type="text/javascript"> 
02.    Ext.onReady(function(){ 
03.        var form = new Ext.form.FormPanel({ 
04.            title : 'form标题', 
05.            width : 300, 
06.            height : 100, 
07.            buttonAlign : 'center', 
08.            labelAlign : 'right', 
09.            labelWidth : 80, 
10.            frame : true, 
11.            trackResetOnLoad : true, 
12.            items : [new Ext.form.TextField({ 
13.                fieldLabel : '文本框', 
14.                name : 'name', 
15.                allowBlank : false 
16.            })], 
17.            buttons : [{ 
18.                text : '保存', 
19.                handler : function(){ 
20. &n