DWR心得


以前は簡単にdwrを応用したことがあって、感じはとても良くて、最近また1つの小さいプロジェクトの中でDWRを使って、いくつかの収穫が総括します:
 
1、DWR暴露の方法では、入力パラメータは基本タイプ、Stringおよび配列などであり、配列はJavascriptのArrayオブジェクトに対応する.戻り値のタイプは、基本タイプ、配列、List、Mapなどを除いて、通常のJavaオブジェクトとすることができますが、convertorが必要です.
コードクリップ:
//TreeRender      
public List<TreeNode> createTree();

 dwr.xmlの対応する構成:
<create creator="new" javascript="TreeRender">
	<param name="class" value="cn.com.util.TreeRender" />
	<include method="createTree" />
</create>
<convert converter="bean" match="cn.com.util.TreeNode">
	<include value="id,fid,text,url,title"/>
</convert>
 
2、DWRのデバッグ機能は非常に強く、ページ操作の返却対象は一般的にJSONのような文字列形式で表示され、非常に役に立つ.
3.JSON文字列をパラメータとしてDWRに渡すメソッド呼び出しをバックグラウンドでorg.json.JSONObjectはフロントからの値を取得し、可能なコードは以下の通りです.
フロントJavascriptコード(部分):
//Student    ,       JS   new       
function Student(id, name, age)
{
	this.id = id;
	this.name = name;
	this.age = age;
}
 
//get id, name, age from page and construct student js object
var a = new Student(idVal, nameVal, ageVal);
var json = JSON.stringify(a);

//construct array parameter from page element
var arr = new Array();
var trObj = btn.parentNode.parentNode.nextSibling.nextSibling.nextSibling;
var trChilds = trObj.childNodes;
for(var i = 0; i < trChilds.length; i++){
	if(trChilds[i].getAttribute("id") == "ok"){
		arr.push(trChilds[i].innerText);
	}
}	

try
{
  	AjaxQuery.query(arr, json, callbackfun);
}catch(e){
       alert(e);
}

バックグラウンドJavaコード(部分):
//...
log.info("   JSON    :" + json);
JSONObject jsonObject = null;
try{
	jsonObject = new JSONObject(json);
}catch(JSONException e){
	log.error("  JSON  :" + e.getMessage());
	e.printStackTrace();
}
String id = "";
String name = "";
int age = "";
try {
	id = jsonObject.getString("id");
	name = jsonObject.getString("name");
	age = jsonObject.getInt("age");
} catch (JSONException e1) {
	log.error("      :" + e1.getMessage());
	e1.printStackTrace();
}
//...

4、DWRでサーブレットAPIを取得する:
import uk.ltd.getahead.dwr.WebContext;  
import uk.ltd.getahead.dwr.WebContextFactory;  
  
//...  
  
WebContext ctx = WebContextFactory.get();//DWR Web     
HttpServletRequest request = ctx.getHttpServletRequest();//  WebContext  Request
HttpSession session = ctx.getSession();//  WebContext  Session 

 
参照先:
JSON使用:http://samueli.iteye.com/blog/225841
 
添付ファイルには、方佳玮が整理した「DWR中国語ドキュメントv 0.9」とDWR入門ドキュメントが含まれています.
また、このまとめを参考にしてください.http://blog.chinaunix.net/u1/53616/showart_420358.html