忍者ブログ
開発やらlinuxについてやったこと、ひっかかったことのメモ
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

Teeda-html-example にはajaxを用いたテーブルのリスト更新のサンプルがついているけど,そのサンプルはボタンを押す度に,テーブルに行を追加していくだけ.

僕がしたいのは,ボタンを押すと,テーブル内の要素が書き換わるようなajax

しかも,テーブルはforeachで動的に行数なども変化させつつ生成したい.

かなり調べまくった結果,やり方わかったので以下に記述.

ajax化したいテーブルサンプルはこんな感じ
<!-- テストajaxテーブル -->
<table border="1">
<thead>
    <tr>
        <th scope="col"></th>
        <th scope="col">hoge</th>
        <th scope="col">hoge</th>
    </tr>
</thead>
<tbody>
    <tr id="aaa" style="display: none;">
        <th  id="ajax">hogehoge</th>
        <td  id="test1">0</td>
        <td  id="test2">0</td>
    </tr>
</tbody>
</table>

このtrタグにidは,HashMapオブジェクトのID名(キー値とでも呼ぶのかな?).
実際の要素となる,ajax,test1,test2は,パブリック変数.
以下ページクラスのajax部分ソース↓
    public Map ajaxTest(){
        List listItems = new ArrayList();
        testItems = new TestDto[3];
        for(int i=0; i<3; i++){
        TestDto dto = new TestDto();
        dto.setAjax("およよ");
        dto.setTest1(1);
        dto.setTest2(2);
        testItems[i] = dto;
        listItems.add(dto);
        }
        Map mapTest = new HashMap();
        mapTest.put("aaa", listItems);       
        return mapTest;
    }
こんな感じでmapオブジェクトを返してあげます.
<script type=text/javascript>
<!--
次,ajaxを実現するjavascript部分↓

var startAjaxTest = function(){
     function home_areajaxPage_ajaxTest(res){
          Kumu.Ajax.removeRender("aaa");
          Kumu.Ajax.render(res);
     }
 Kumu.Ajax.executeTeedaAjax(home_areajaxPage_ajaxTest, []);
};

KumuEventConf = {
            'click_startAjaxTest' : startAjaxTest
          }
//-->
</script>

あ,jsファイルの読み込みもちろん忘れずに.

<input type="button" value="Test" id="startAjaxTest"/>
こんな感じでボタン生成してあげれば完成.

ボタンを押すと,ページクラスから値を引っ張ってテーブルの要素に代入します.
ページクラスの値を変えて,ボタンを押せば,ちゃんと要素が書き換わるかと.

僕が迷ったのは,上記javascriptの赤文字で記述されてる部分.
それがサンプルには記述されてないため,どんどん要素が追加されていく仕様だったみたい.

Kumu.Ajax.render()はデフォルトでinnerHTMLでセットする動作らしい.
そして調べた結果
Kumu.Ajax.removeRender(id)をすると,直前に追加した要素を削除してくれるらしいです.

とりあえず,無事に出来てよかった.
次はグラフとテーブルを組み合わせた動的なテーブル更新を実現します.

PR
ネット調べまくっていろいろやってみても全くできず。。。

何時間迷ったことか.

サンプルと自分の見比べてようやく解決.

以下Teeda Ajaxの簡単なサンプルソース
  1. HTMLページにkumu.js,event.js,ajax.jsを読み込む(パス名気をつけて)
  2. ページに#1のソース貼り付け
  3. <body>部に#2のソース記述
  4. 対応するページクラスに#3のソース記述
#1
<!--
var startAjax = function(){
    function home_ajaxPage_ajaxStartAjax(res){
      var result = $i('result');
      result.innerHTML = res;
    }
    Kumu.Ajax.executeTeedaAjax(home_ajaxPage_ajaxStartAjax, [], Kumu.Ajax.RESPONSE_TYPE_TEXT);
  };

KumuEventConf = {
            'click_startAjax' : startAjax
          }
//-->
</script>

#2
<div id="result">ここが変わります</div>
<input type="button" value="Start Ajax" id="startAjax" />

#3
    public String ajaxStartAjax(){
        return "Start Ajax";
    }

このサンプルの動作は,Start Ajaxというボタンを押すと,id="result"の部分のテキストが,
サーバからとってきた文字列StartAjaxになります.
注意すべきは,関数名.
churaプロジェクトだと,javaクラスは,プロジェクト名.web.ディレクトリ名パッケージの中にあるので,

関数は,
ディレクトリ名_ページクラス名_メソッド名 という命名規則です.

さらにメソッドは頭がajaxで始まる名前にすること.



忍者ブログ [PR]
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
フリーエリア
最新CM
[06/12 ziggy]
最新TB
プロフィール
HN:
poti
性別:
非公開
バーコード
ブログ内検索
P R
FX NEWS

-外国為替-