[Java]Stripes Frameworkどうよ。 その4 〜JSONレスポンスあるよ。
引き続きStripesです。
JSONのレスポンスを返す機能が標準でありました。
まずは、ActionBean
package action; import java.util.HashMap; import java.util.Map; import net.sourceforge.stripes.action.DefaultHandler; import net.sourceforge.stripes.action.Resolution; import net.sourceforge.stripes.ajax.JavaScriptResolution; import selva2.Action; public class AjaxAction extends Action { @DefaultHandler public Resolution defaultHandler() { Map<String, String> map = new HashMap<String, String>(); map.put("id", "1"); map.put("name", "KING"); return new JavaScriptResolution(map); } }
JavaScriptResolutionクラスが、JSONを返すResolutionです。引数にBeanやMapを渡せばJSONに展開してくれます。
なんで、JsonResolutionクラスじゃないんだ?と思ったら、実際に返しているのは、JavaScriptのコードでした。
次、html。jquery使います。
<html> <head> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> <script type="text/javascript"> function ajaxAction() { $.ajax({ type: "POST", url: "/webapp2/Ajax.action", dataType: "script", success: function(res){ var obj = eval(res); $('#id').html(obj.id); $('#name').html(obj.name); } }); } </script> </head> <body> <input type="button" onclick="ajaxAction()" value="ajax" /> <ul> <li>id: <span id="id"></span></li> <li>name: <span id="name"></span></li> </ul> </body> </html>
はい。Jacksonのjar入れて、JsonResolutionとか独自で作った方が良いやも。
以上