FrontPage - JAVAに関する備忘録 HIDEKAZU PukiWiki さんの
Ajax DWR(Direct Web Remoting) セッション のコード改(こちらでは動作できなかった為)
*赤いところが変更点と気になったところ。
使用イメージ

郵便番号のところに7つ数字入れるとその瞬間に都道府県と市区町村、テスト(セッション情報)に情報が入る。
↓

確認ボタンを押すとアラーとが出る。
session.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>DWR</title>
<script type='text/javascript' src='dwr/interface/Testdwr.js'></script>
<script type='text/javascript' src='dwr/engine.js'></script>
<script type='text/javascript' src='dwr/util.js'></script>
<script type='text/javascript'>
<!--
var resData;
function searchAddress () {
var zipcode = dwr.util.getValue("zipcode");
if (zipcode.length == 7) {
Testdwr.getZipdata(zipcode, result); //getZipdataの引数が郵便番号がはいり、コールバック関数resultが呼ばれると思うので、zipcodeとresultを逆にしました。
}
}
function result(data) {
dwr.util.setValues(data);
resData = dwr.util.toDescriptiveString(data, 2); // toDescriptiveString(data, 2)はtoStringの気の効いてるやつ?第1引数は文字列にしたいオブジェクト、第2引数は複数行可の指定?エイゴワカラン。
}
function btnKakunin() {
alert(resData);
}
// -->
</script>
</head>
<body>
住所検索<br>
郵便番号:<input type="text" id="zipcode" size="10" onkeyup="searchAddress()" maxlength="7"><br>
都道府県:<input type="text" id="pref" size="10"><br>
市区町村:<input type="text" id="city" size="10"><br>
テスト:<input type="text" id="test2" size="10"><br>
<input type="button" value="確認" onclick="btnKakunin()">
</body>
</html>
package jp.hoge;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.http.HttpSession;
import org.directwebremoting.WebContextFactory;
import org.directwebremoting.WebContext;
public class Testdwr {
public Map<String,Object> getZipdata(String data) {
//DWR2.0ではuk.ltd.getahead.dwr.ExecutionContextは非推奨になってるので変更
WebContext wContext = WebContextFactory.get();
HttpSession session = wContext.getSession();
if (session.getAttribute("test2") == null) {
session.setAttribute("test2", data);
}
Map<String,Object> map = new HashMap<String,Object>();
map.put("pref","北海道");
map.put("city","札幌市");
map.put("test2",session.getAttribute("test2"));
return map;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE dwr PUBLIC
"-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN"
"http://getahead.ltd.uk/dwr/dwr20.dtd">
<dwr>
<allow>
<create creator="new" javascript="Testdwr" scope="session">
<param name="class" value="jp.hoge.Testdwr">
</param>
</create>
</allow>
</dwr>
<servlet> <servlet-name>dwr-invoker</servlet-name> <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <init-param> <param-name>debug</param-name> <param-value>true</param-value> </init-param> </servlet> <servlet-mapping> <servlet-name>dwr-invoker</servlet-name> <url-pattern>/dwr/*</url-pattern> </servlet-mapping>
