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