SAStruts(Super Agile Struts)あれこれ

ATOMRSS

AjaxでJSONデータを取得しましょう

目次

    • 1.JSONIC(JSONエンコーダー/デコーダーライブラリ)を配置
    • 2.アクションクラス
      • sa-struts-tutorial\src\main\java\tutorial\action\AjaxAction.java (変更)
    • 3.JSP
      • sa-struts-tutorial\webapp\WEB-INF\view\ajax\index.jsp (変更)



SAStruts+Ajax+jQueryを試してみましょう。

ここでは、jQueryのAjax機能を使用してアクションクラスを呼び出し、レスポンスとして返されるJSON形式の部署情報を表示しましょう。

ここでは、例を単純にするためにアクションフォームを使用しません。



1.JSONIC(JSONエンコーダー/デコーダーライブラリ)を配置



Entityインスタンス→JSON形式への変換にはJSONICを使用します。

JSONICからダウンロードした"jsonic-1.0.2.jar"を sa-struts-tutorial\src\main\webapp\WEB-INF\libフォルダにコピーします。
ライブラリのバージョンは適宜読み替えて下さい。

ajax_json_1.jpg

[プロジェクト] -> [プロパティ]でプロパティウインドウを開きます↓

ajax_json_2.jpg

↑の[Javaのビルド・パス]を選択して[JARの追加]ボタンをクリックします。

ajax_json_3.jpg

"jsonic-1.0.2.jar"を選択して[OK]ボタンをクリックすればOKです。

アクションクラス

"sa-struts-tutorial\src\main\java\tutorial\action\AjaxAction.java"を以下のように変更します。
package tutorial.action;
 
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletResponse;
import org.seasar.struts.annotation.Execute;
import org.seasar.struts.util.ResponseUtil;
import tutorial.entity.Department;
import tutorial.service.DepartmentService;
import net.arnx.jsonic.JSON;
 
public class AjaxAction {
    
    @Resource
    protected DepartmentService departmentService;
    
    public List<Department> deptItems;
    
    @Execute(validator = false)
    public String index() {
        return "index.jsp";
    }
    
    @Execute(validator = false)
    public String load_json() throws IOException {
        
        //データベースから部署データを全件取得します。
        deptItems = departmentService.findAll();
        
        HttpServletResponse httpServletResponse = ResponseUtil.getResponse();
        httpServletResponse.setContentType("application/json");
        PrintWriter sendPoint = new PrintWriter(httpServletResponse.getOutputStream());
        
        //Entity→JSON形式に変換して出力します。
        sendPoint.println(JSON.encode(deptItems));
        sendPoint.flush();
        sendPoint.close();
        return null;
    }
}


※補足
String json = JSON.encode(deptItems);
によって、Entityのリストは以下のようなJSON形式データに変換されます。
[{"employeeList":null,"id":1,"name":"ACCOUNTING","version":1},
 {"employeeList":null,"id":2,"name":"RESEARCH","version":1},
 {"employeeList":null,"id":3,"name":"SALES","version":1},
 {"employeeList":null,"id":4,"name":"OPERATIONS","version":1}]




JSP

"sa-struts-tutorial\webapp\WEB-INF\view\ajax\index.jsp"を以下の内容に変更します。
<%@page pageEncoding="UTF-8"%>
<html>
<head>
<title>Tutorial: Ajax</title>
<link rel="stylesheet" type="text/css" href="${f:url('/css/sa.css')}" />
<script src="${f:url('/js/jquery.js')}"></script>
</head>
<body>
 
<h1>Tutorial: Ajax</h1>
 
<script type="text/javascript">
function loadJSON() {
  $.ajax({  
    url: '${f:url('/ajax/load_json')}',  
    type: 'GET', 
    dataType: 'json',  
    cache: false, //ブラウザにキャッシュさせません。
    error: function(){  
        alert("jsonファイルの読み込みに失敗しました");  
    },  
    success: function(json){  
        $("#response").html("部署数:" + json.length + "<br/>")
        for( var i=0; i<json.length; i++ ) {
            $("#response").append("部署名:" + json[i].name + "<br/>").html()
        }
    }  
  });  
}
</script>
 
<input type="button" value="部署情報取得" onclick="loadJSON()"/>
<div id="response"></div>
</body>
</html>	



http://localhost:8080/sa-struts-tutorial/ajax/にアクセスしましょう。以下の画面が表示されますので、
ajax_json_4.jpg

「部署情報取得」ボタンをクリックしましょう。以下のように部署情報が表示されます。
ajax_json_5.jpg

アップロードしたファイル

プレゼン公開・共有サイト handsOut.jp チーム・マイナス6% - みんなで止めよう温暖化

基本情報

ソースコードID:
597
登録者:
台北猫々
登録日時:
2008/07/30 13:42
最終更新日時:
2009/05/08 22:46
登録ページ数:
106
アクセス数:
79054
タグ:
java mysql json ajax hello sastruts ページング サンプル フレームワーク データベース トークンチェック テンプレート flex validwhen s2jdbc dolteng jaxb リセット s2jdbc-gen 自動生成 一括登録 super agile struts ria tiles 一括更新 jsonic エンティティ
編集権限:
ログインユーザ全員
ブックマーク:
  • codeなにがしブックマークに追加する 0 users
  • このページをはてなブックマークに追加
  • このページを del.icio.us に追加

GoodJob

  • GoodJob
  • 1668

GJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJGJ

GJGJGJGJGJGJGJGJ

編集者一覧

  • 台北猫々

GoodJobしたユーザ

  • ikdk
  • NAT
  • mikeda
  • うさうさ
  • こてつ
  • greennoah
  • とむよん
  • icofit
  • teshimasa4
  • tamr
  • T[]HAL

ブックマークコメント