dwr JSONオブジェクトをインタフェースからバックグラウンド処理に持ち込む


1:インタフェースでデータをJSON文字にカプセル化する逃げ:フォーマットは以下の通り:
 
     {"a":"1","b":"2","c":[{"d":"3","e":"4"},{"d":"3","e":"4"}]}
 
インタフェースjsは以下の通りである.
 
    
   //       
	function getJsons(){
		var zlf = checkCongfu("zhonglei");
		
		if(!zlf){
		return "";
		}
		var sfxm = document.getElementById("sfxm").value;
		
		if(sfxm==2){
			var fzxamt = document.getElementById("fzxamt").value;
			var zxel = document.getElementsByName("xnamt");	
			var ed = document.getElementById("namt").value;	
			var fpsum = 0;
			
			for(var i=0;i<zxel.length;i++){
				if(zxel[i].value!=""){
					fpsum = fpsum + parseFloat(getNum(zxel[i].value));
				}
			}
			fpsum = fpsum+parseFloat(getNum(fzxamt));
			if(parseFloat(getNum(ed))<fpsum){		
				alert("          ");
				return "";
			}
		}
	var mx = document.getElementsByName("dbxz");
			var namt = document.getElementById("namt");
			var allused = document.getElementById("usedamt");
		var danbao = document.getElementsByName("danbao");
		var zhonglei = document.getElementsByName("zhonglei");
		var odi = document.getElementById("oid");
		var appid = document.getElementById("appid");
		if(namt.value!=""){
		
		var r = new StringBuffer('{ \"namt\":\"');
		var tzsm = document.getElementById("othersVal");
		
 		r.append(parseFloat(getNum((namt.value)))*10000);
		r.append('\",\"oid\":\"');
		r.append(odi.value);
		r.append('\",\"tzsm\":\"');
		r.append((tzsm.value));
		r.append('\",\"cor\":\"');
		r.append('<%=cror%>');
		r.append('\",\"appid\":\"');
		r.append(appid.value);
		r.append('\",\"allused\":\"');	
		r.append(0);
		r.append("\"");
		if(sfxm==2){
		r.append(',\"mx\":');
		var tempr =new StringBuffer("[");
		
		
		var zhonglei = document.getElementsByName("zhonglei");
		//var jyed = parseFloat(getNum(document.getElementsByName("xnamt")))*10000;
		var jyed = document.getElementsByName("xnamt")
		var danbao = document.getElementsByName("danbao");
		var danbaosm = document.getElementsByName("xnwartcmt");
		var f = false;
		tempr.append('{\"zhonglei\":\"');
				tempr.append(100);
				tempr.append('\", \"xnamt\":\"');
				tempr.append(parseFloat(getNum(document.getElementById("fzxamt").value))*10000);
				tempr.append('\", \"usedamt\":\"');
				tempr.append(parseFloat(getNum(document.getElementById("fzxamt").a))*10000);
				tempr.append('\",\"danbao\":\"');
				tempr.append(danbao[0].value);
				tempr.append('\",\"danbaosm\":\"');
				tempr.append(document.getElementById("fzxnwartcmt").value);
				tempr.append('\"},');
		if(danbao[0].value==""){
					alert("       !");
					danbao[0].focus;
					return "";
				}	
				
		for(var i=0 ; i<mx.length;i++){
	
			//if(mx[i].checked==true || jyed[i].value!=""){
			//alert(jyed[i].value);
			if(jyed[i].value!=""){
				if(jyed[i].value==""){
					alert("     !");
					jyed[i].focus;
					return "";
				}	
				if(danbao[i+1].value==""){
					alert("       !");
					
					danbao[i+1].focus;
					return "";
				}	
				if(zhonglei[i].value==""){
					alert("       !");
					zhonglei[i].focus;
					return "";
				}
				tempr.append('{\"zhonglei\":\"');
				tempr.append(zhonglei[i].value);
				tempr.append('\", \"xnamt\":\"');
				tempr.append(parseFloat(getNum(jyed[i].value))*10000);
				tempr.append('\", \"usedamt\":\"');
				//if(jyed[i].a!=null && jyed[i].a!=""){
				//tempr.append(parseFloat(getNum(jyed[i].a))*10000);
				//}else{
				tempr.append(0);
				//}
				tempr.append('\",\"danbao\":\"');
				tempr.append(danbao[i+1].value);
				tempr.append('\",\"danbaosm\":\"');
		
				tempr.append(danbaosm[i].value);
				tempr.append('\"},');
				f = true;
			}else{
				//alert("     !");
					//jyed[i].focus;
					//return "";
			}
		}

			tempr =tempr.substringBetween(0,tempr.getLength()-1);

		tempr=tempr+"]";
	
		r.append(tempr);
        }
        r.append("}");
		
		
		return r;
		}else{
			return "";
		}
	}

2:インターフェイスはJSONをバックグラウンドに伝える
     
 function dosave(){

 var r = getJsons();
 if(r!=""){
	document.getElementById("dos").disabled =true ;
	document.getElementById("dob").disabled = true ;
    cedit.saveFbcmcEditApp(r.toString(),chagexnAmt);	
  }
}


3:バックグラウンドでJSONを受け取って処理する:
 
  
	public String saveFbcmcEditApp(String app){
		String s ="";
		//String s = fbcmCeditAuditDao.saveFbcmcEditApp(app);
		JSONObject t= JSONObject.fromObject(app);
		String namt = t.getString("namt");
		String oid = t.getString("oid");
		String cor = t.getString("cor");
		String allused = t.getString("allused");
		//String mx = t.getString("mx");
	
		//this.getDaoFacade().getCommonDao().delete(object)
		FbcmCeditApp oidFbcmCeditApp = getDaoFacade().getFbcmCeditAuditDao().checkAmt(oid, namt);
		if(oidFbcmCeditApp==null){
			return ("          ");
		}
		if(oidFbcmCeditApp.getSuperclt()!=null){
			FbcmCeditApp apps =getDaoFacade().getFbcmCeditAuditDao().getFbcmCeditAppByCltno(oidFbcmCeditApp.getSuperclt());
			
			if(apps!=null && apps.getAmt().doubleValue() < Double.parseDouble(namt)){
				return ("            ");
			}
		}
		Set oset = oidFbcmCeditApp.getFbcmCrtappDetails();
		//        
		if(oidFbcmCeditApp.getIsproject().equals(new Long(String.valueOf(Statics.P_NO)))){
		String mx = t.getString("mx");
		JSONArray ja= JSONArray.fromObject(mx);
		//Set mxs = new HashSet();
		for(int i =0 ; i<ja.size();i++){
			JSONObject tempmx = (JSONObject)ja.get(i);
			String zl =tempmx.getString("zhonglei");
			String ed =tempmx.getString("xnamt");
			Iterator iter =oset.iterator();
			while(iter.hasNext()){
			
				FbcmCrtappDetail fcd = (FbcmCrtappDetail)iter.next();
			
				if(fcd.getType().equals(zl)){
					if(fcd.getUsedamt()!=null &&!"".equals(fcd.getUsedamt())){
						System.out.println(fcd.getUsedamt().doubleValue() +"@@@"+Double.parseDouble(ed));
						if(fcd.getUsedamt().doubleValue() > Double.parseDouble(ed)){
							if("100".equals(zl)){
								return ("             ");
							}else{
								String name =getDaoFacade().getFbcmCeditAuditDao().getSxName(zl);
								return (name+"          ");
							}
						}
					}
				}
			}
		}
		}
		//          
		List ll = getDaoFacade().getFbcmCeditAuditDao().findSqsms(Long.valueOf(oid));
		if(ll!=null){
			for(int i=0; i<ll.size();i++){
				FbcmAppDetail ttt = (FbcmAppDetail)ll.get(i);
				this.getDaoFacade().getCommonDao().delete(ttt);
			}
		}
		//          
		//List lll = getDaoFacade().getFbcmCeditAuditDao().findTzmx(Long.valueOf(oid));
		List lll = getDaoFacade().getFbcmCeditAuditDao().findTzmx(oidFbcmCeditApp.getOldid());
		if(lll!=null){
			for(int i=0; i<lll.size();i++){
				FbcmCrtappDetail ttt = (FbcmCrtappDetail)lll.get(i);
				this.getDaoFacade().getCommonDao().delete(ttt);
			}
		}
		////       
		List l = getDaoFacade().getFbcmCeditAuditDao().getEditAppByOldId(oidFbcmCeditApp.getOldid().toString());
		//getDaoFacade().getFbcmCeditAuditDao().deleteAuditEditApp(l);
		if(l!=null){
			for(int i=0; i<l.size();i++){
				FbcmCeditApp ttt = (FbcmCeditApp)l.get(i);
				this.getDaoFacade().getCommonDao().delete(ttt);
			}
		}
		//           。
		FbcmCeditApp yssx =(FbcmCeditApp)this.getDaoFacade().getCommonDao().findById(oidFbcmCeditApp.getOldid(), FbcmCeditApp.class);
		oidFbcmCeditApp.setLoadadjrate(yssx.getLoadadjrate());
		FbcmCeditApp temp = getDaoFacade().getFbcmCeditAuditDao().saveFbcmCeditApp(oidFbcmCeditApp, namt,allused, oid, cor, t);
		FbcmCeditApp ysq = getDaoFacade().getFbcmCeditAuditDao().getAppById(oidFbcmCeditApp.getOldid().toString());
		getDaoFacade().getFbcmCeditAuditDao().saveFbcmAppDetail(ysq, t);
		s="    ;"+temp.getId();
		return s;
	}