上篇文章介绍了通过使用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后台的交互是很方便的,这里介绍的两种方法各自用在不同的场合下,根据需要来进行选择.