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