EXTJS与java后台交互 JSON使用



EXTJS与java后台交互 JSON使用。

上篇文章介绍了通过使用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 plaincopy

  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. submitData : function( ) {
  16.                       //提交form表单
  17.                       this.uploadForm.getForm().submit({
  18.                            waitMsg: ’正在提交请稍后…’,
  19.                            //将表单信息提交到Servlet
  20.                            url: ctx + ’/testServlet, method: ’POST’,
  21.                            //重点:success块
  22.                            success: function(form, action) {
  23.                                //showmessage是从后台传过来
  24.                                Ext.MessageBox.alert(‘提示’, action.result.showmessage);
  25.                            },
  26.                            //failure块
  27.                            failure: function(form, action) {
  28.                                Ext.Msg.alert(‘提示’, action.result.msg, function() {
  29.                                   window.close();
  30.                                });
  31.                            },
  32.                            scope: this });
  33. }

 

Servlet代码:


 

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

 

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

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

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

http://blog.csdn.net/wanghuan203/article/details/8125970