上篇文章介绍了通过使用dwr在EXTJS代码里直接调用后台的Java方法.这篇文章介绍在没有调用Java方法,没有返回值的情况下获取Java的返回信息.就要用到的Extjs的submit配置项---success和failure来进行配置.
        Ext.form.Action.Submit的配置选项success、failure是根据返回json中success属性判断的,如果success为true,则success,false则failure,如果无json中无success属性,failure,故要提示操作是否成功,必须要返回success属性。
       
        这种方法用的也很多,在js界面除了调用Java方法来完成各种验证和取值外,还会执行表单的提交.提交了表单,并没有调用后台方法,通过这种方法便可以知道执行结果,来显示执行信息.


EXTJS页面部分代码:

[javascript]  view plain  copy
  1. //提交按钮  
  2. var submitButton = new Ext.Button(  
  3.                          {  
  4.                              text: '提交',  
  5.                              iconCls: 'c_page_white_get',  
  6.                              scope: this,  
  7.                              width: 75,  
  8.                              height: 24,  
  9.                              handler: function() {  
  10.                              //执行提交方法  
  11.                              this.submitData ( );  
  12.                           }  
  13. });  
  14.   
  15.   
  16. //提交时执行的方法  
  17. submitData : function( ) {  
  18.                       //提交form表单   
  19.                       this.uploadForm.getForm().submit({  
  20.                            waitMsg: '正在提交请稍后...',   
  21.                            //将表单信息提交到Servlet   
  22.                            url: ctx + '/testServlet, method: 'POST',  
  23.   
  24.                            //重点:success块   
  25.                            success: function(form, action) {  
  26.                                //showmessage是从后台传过来  
  27.                                Ext.MessageBox.alert('提示', action.result.showmessage);   
  28.                            },   
  29.                            //failure块   
  30.                            failure: function(form, action) {   
  31.                                Ext.Msg.alert('提示', action.result.msg, function() {   
  32.                                   window.close();   
  33.                                });   
  34.                            },   
  35.                            scope: this });   
  36. }   


Servlet代码:

[java]  view plain  copy
  1. public class testServlet extends  HttpServlet {  
  2.     
  3.          publicvoid doPost(HttpServletRequest request, HttpServletResponse response)  
  4.                             throwsServletException, IOException {  
  5.                    try{  
  6.                             //调用action等后台方法  
  7.                             //有个返回值,返回给界面的内容  
  8.                             String showMessage = new TestAction().test();  
  9.                             //设置response格式  
  10.                             response.setCharacterEncoding("UTF-8");  
  11.                             response.setContentType("text/html");  
  12.                             response.getWriter().write(  
  13.                                  "{'success':true,'showmessage':'"+ showMessage +"'}");  
  14.    
  15.                    }catch (Exception e) {  
  16.                             //失败时返回的信息  
  17.                             response.setCharacterEncoding("UTF-8");  
  18.                             response.setContentType("text/html");  
  19.                             response.getWriter().write(  
  20.                                                "{'success':false,'showmessage':'出现异常,操作失败'}");  
  21.                             response.setStatus(500);  
  22.                    }  
  23.    
  24.          }  
  25.    
  26.          publicvoid doGet(HttpServletRequest request, HttpServletResponse response)  
  27.                             throwsServletException, IOException {  
  28.                    doPost(request,response);  
  29.          }  
  30. }  


           通过例子可以看出,success和failure方法使用的是json字符串的方式将返回值以字符串的格式通过response携带回js界面.

          Ext的配置选项success、failure是根据response的status属性,即状态码决定的,200则为success,404或500等则为failure。

          EXTJS与Java后台的交互是很方便的,这里介绍的两种方法各自用在不同的场合下,根据需要来进行选择.