extjsデータのフロントバックグラウンドデータインタラクション
7891 ワード
前編では,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 plain copy print ?//送信ボタン var submitButton = new Ext.Button( { text:'コミット', iconCls: 'c_page_white_get', scope: this, width: 75, height: 24, handler: function() { //コミットメソッドの実行 this.submitData ( ); } }); //提出時に実行する方法 submitData : function( ) { //フォームのコミット this.uploadForm.getForm().submit({ waitMsg:'提出中ですので少々お待ちください...' //フォーム情報をサーブレットに送信 url: ctx + '/testServlet, method: 'POST', //ポイント:successブロック success: function(form, action) { //ショーメッセージは楽屋から届いています Ext.MessageBox.alert('ヒント',action.result.showmessage); }, //failureブロック failure: function(form, action) { Ext.Msg.alert('ヒント',action.result.msg,function(){ window.close(); }); }, scope: this }); }
サーブレットコード:
[java] view plain copy print ? public class testServlet extends HttpServlet { publicvoid doPost(HttpServletRequest request, HttpServletResponse response) throwsServletException, IOException { try{ //アクションなどのバックグラウンドメソッドを呼び出す //インタフェースの内容に戻る戻り値があります 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バックグラウンドのインタラクションは便利で、ここで紹介する2つの方法はそれぞれ異なる場合に用いられ、必要に応じて選択する.
Ext.form.Action.Submitのコンフィギュレーションオプションsuccess、failureは、戻りjsonのsuccess属性に基づいて判断され、successがtrueの場合success、falseの場合failure、jsonにsuccess属性がなければfailureなので、操作が成功したかどうかを示すにはsuccess属性を返さなければならない.
この方法は、jsインタフェースでJavaメソッドを呼び出して各種の検証と値を取得するほか、フォームのコミットも実行することが多い.フォームをコミットしてもバックグラウンドメソッドは呼び出されず、実行結果を知る実行情報を表示することができる.
EXTJSページ部分コード:
[javascript] view plain copy print ?
//
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 });
}
サーブレットコード:
[java] view plain copy print ?
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バックグラウンドのインタラクションは便利で、ここで紹介する2つの方法はそれぞれ異なる場合に用いられ、必要に応じて選択する.