jQuery取得Actionが返すJSONデータ項目の実例記録について(Struts 2)

5262 ワード

ここでは、ページコードとアクションクラスに関するコードを参照してください.
 
ページコード(jQuery ajax非同期要求取得データ):
 
//      
	function saveDecision() {
		var rowid = checkSelected();
		var rowData = jQuery("#list").jqGrid('getRowData',
				rowid);
		var processIsRight = rowData["processIsRight"];
		if(rowid==-1){ alert("          ");return; }
		else if(processIsRight==0){//          
			alert("               ,          ");return;
		}
		//          :  
		var _decisionMaker = $("#businessModule").find("option:selected").val();
		if(_decisionMaker=='' || _decisionMaker == "undefined") { alert("        !"); return;}
		else if(rowid>0){
		var url = "saveDecision.action?" + getParams();
		//document.write(url);
		alert(url);
		/***/
		$.ajax({
			url : url,
			type : 'POST',
			dataType : 'json',
			success : function(json) {
				//reference: http://blog.csdn.net/jpr1990/article/details/6931027
				alert(json);
				window.close();
			},
			error : function() {
				alert('      ,   ..');
				//window.close();
			}
		});
		
		}else{
			alert("         ");return;
		}
	}

バックグラウンドアクション類関連コード(主にJSONデータをどのように返すかを見る):
/**
	 *       
	 * 	
	 	0 -    . 
		1 -   .
		2-    . 
 		3 -   . 
 		4 -   . 
 		5 -   . 
		6 -    .
	 */
	public String save() {
		if (assistDecision != null) {
			try {
				//         
				Timestamp decision_date = new Timestamp(System.currentTimeMillis());//           ,      
				
				assistDecision.setDecisionMaker(assistDecision.getDecisionMaker());
				
				assistDecision.setDecisionTime(decision_date);
				//          
				if(this.getIsStartProcess().equals("true")){
					assistDecision.setSolutionState(2);//   SolutionState  :2-   
					this.decisionExecutorService.saveAssistDecision(assistDecision,true,processId,emgencyInfoProcessId);
				}else{
					assistDecision.setSolutionState(0);//   SolutionState  :0-   
					this.decisionExecutorService.saveAssistDecision(assistDecision,false,processId,emgencyInfoProcessId);
				}
				jsonMassage = "    ,     !";
			} catch (Exception e) {
				e.printStackTrace();
				jsonMassage = "               ,          ";
				System.out.println(jsonMassage);
				return SUCCESS;
			}
		}
		return SUCCESS;

	}

 
システムを直接印刷out.println(jsonMassage);そしてreturn SUCCESS;jsonMassageデータをページのsuccessメソッドに戻します.
success : function(json) {
				//reference: http://blog.csdn.net/jpr1990/article/details/6931027
				alert(json);
				window.close();
			},
			error : function() {
				alert('      ,   ..');
				//window.close();
			}

なぜActionのsaveメソッドはクライアントにどのデータを返すか知っていますか?これはActionのプロファイル構成によって決定されます:jsonMassageで、ここでメソッドsaveがjsonMessage(プロパティ/オブジェクト)を返すように設定されています.jsonMessageがどのようなデータ型であるかについては、ここでは気にしないで、戻りは自動的に彼のデータ型を調べ、対応するデータフォーマットでクライアント-ページに戻ります.
<action name="saveEvent" class="eventAction" method="saveEvent">
	<result name="success" type="json">
		<param name="includeProperties">result </param>
	</result>
</action>

<action name="saveDecision" class="decisionExecutorAction" method="save">
	<result name="success" type="json">
		<param name="root">jsonMassage</param>
	</result>
</action>

=================================================
<action name="saveEvent" class="eventAction" method="saveEvent">
	<result name="success" type="json">
		<param name="includeProperties">result </param>
	</result>
</action>

<action name="saveDecision" class="decisionExecutorAction" method="save">
	<result name="success" type="json">
		<param name="root">jsonMassage</param>
	</result>
</action>

この2つのアクション構成はどのような違いがありますか?皆さんは分かりましたか?はい、パラメータの戻り方が違います
ではresultとjsonMassageは何か違いがありますか?みんな調べてみろ...