现在的位置: 首页 > 综合 > 正文

EXTJS与java后台交互(二)JSON使用

2013年11月13日 ⁄ 综合 ⁄ 共 1893字 ⁄ 字号 评论关闭

 
        上篇文章介绍了通过使用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页面部分代码:

//提交按钮
var submitButton = new Ext.Button(
                         {
                             text: '提交',
                             iconCls: 'c_page_white_get',
                             scope: this,
                             width: 75,
                             height: 24,
                             handler: function() {
                             //执行提交方法
                             this.submitData ( );
                          }
});


//提交时执行的方法
submitData : function( ) {
                      //提交form表单 
                      this.uploadForm.getForm().submit({
                           waitMsg: '正在提交请稍后...', 
                           //将表单信息提交到Servlet 
                           url: ctx + '/testServlet, method: 'POST',

                           //重点:success块 
                           success: function(form, action) {
                               //showmessage是从后台传过来
                               Ext.MessageBox.alert('提示', action.result.showmessage); 
                           }, 
                           //failure块 
                           failure: function(form, action) { 
                               Ext.Msg.alert('提示', action.result.msg, function() { 
                                  window.close(); 
                               }); 
                           }, 
                           scope: this }); 
} 

Servlet代码:

public class testServlet extends  HttpServlet {
  
         publicvoid doPost(HttpServletRequest request, HttpServletResponse response)
                            throwsServletException, IOException {
                   try{
                            //调用action等后台方法
                            //有个返回值,返回给界面的内容
                            String showMessage = new TestAction().test();
                            //设置response格式
                            response.setCharacterEncoding("UTF-8");
                            response.setContentType("text/html");
                            response.getWriter().write(
                                 "{'success':true,'showmessage':'"+ showMessage +"'}");
 
                   }catch (Exception e) {
                            //失败时返回的信息
                            response.setCharacterEncoding("UTF-8");
                            response.setContentType("text/html");
                            response.getWriter().write(
                                               "{'success':false,'showmessage':'出现异常,操作失败'}");
                            response.setStatus(500);
                   }
 
         }
 
         publicvoid doGet(HttpServletRequest request, HttpServletResponse response)
                            throwsServletException, IOException {
                   doPost(request,response);
         }
}

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

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

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

抱歉!评论已关闭.