pirkak公式サイト|株式会社 オリエンタルアーツ
HOMEpirka TOP > サンプル集
pirka サンプル集

> 戻る

ループの使い方


≪サンプル説明≫  

メール一覧が表示されます。
タイトルをクリックすると下部にメール本文が表示されます。

削除ボタンをクリックするとチェックされている行が削除されます。


≪作成時注意点≫ 

・WEB画面上の繰り返しを使用するには繰り返す範囲をdivタグで囲みます。
 このdivタグにはtype="loop"とname属性が必要です。

 【例】<div type="loop" name="loopItem">
    ・
    ・
    ・
    </div>

・Javaクラスのコンストラクタやサブミットボタン等がクリックされたときに動作する
 アクションメソッド内で繰り返されるデータを設定します。

 【例】loopItemで囲まれた範囲を三回繰り返す
    FieldMap field = getFieldMap();

    // ループに格納されているフィールドを全てクリア
    field.clearFieldMap("loopItem");

    // 三回繰り返す
    for (int i = 0; i < 3; i++) {

    // 繰り返される領域のフィールドマップを取得
    FieldMap loopField = createLoopFieldMap("loopItem");

    // 繰り返される領域のフィールドマップに値を設定
    loopField.setValue("no", ""+(i + 1));
    loopField.setValue("item", "繰り返し" + (i + 1)); 

    // 繰り返しフィールドマップを追加
    field.addFieldMap("loopItem", loopField);
    }

・繰り返し部のデータの取得は以下の様に行います。

【例】FieldMap field = getFieldMap();
   int loopCount = field.getFieldMapSize("loopItem");

   // ループ数だけ回す
   for (int i = 0; i < loopCount; i++) {

   // ループのフィールドマップを取得しそこから各フィールドのデータを取得する
   FieldMap loopField = field.getFieldMap("loopItem", i);
   String no = loopField.getValueString("no");
   String item = loopField.getValueString( "item");
   }

・また、繰り返し部はgetBeanListメソッド、setBeanListメソッド等でBeanオブジェクトが
 格納されているリストとして一括取得、一括設定を行うこともできます。

・繰り返し中に存在するサブミットボタンやリンクがクリックされた時実行される
 アクションメソッド中では繰り返しの何番目がクリックされたかを
 getActionLoopIndexメソッドで知ることができます。


ソースファイル
LoopSample.html  サンプル画面のHTMLファイル

<html>
<head>
<title>pirka逆引きサンプル ループの使い方</title>
</head>
<body>
<center>
<span style="color: #8080ff">pirka逆引きサンプル ループの使い方</span><br>
<hr>
<form name="formItem" method="post">
<table border="1" style="font-size: 10pt">
<tr>
<th>選択</th><th>No.</th><th>タイトル</th><th>送信者</th><th>受信日時</th>
</tr>
<div type="loop" name="loopItem">
<tr>
<td width="30" align="center"><input type="checkbox" name="deleteFlag"></td>
<td width="30" align="right"><span name="no"></span></td>
<td width="350"><a href="" name="titleLink"><span name="title"></span></a></td>
<td width="100"><span name="senderName"></span></td>
<td width="140"><span name="dateTime"></span></td>
</tr>
</div>
<tr>
<td colspan="5"><input type="submit" name="deleteButton" value="削除"></td>
</tr>
<tr>
<td colspan="5"><pre><span name="msg"></span></pre></td>
</tr>
</table>
</form>
<hr>
<a name="returnWindow" href="">戻る</a>
</center>
</body>
</html>


LoopSample.java  サンプル画面のJavaソースファイル

package jp.oarts.pirka.sample.instruction.is101400;

import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;

import jp.oarts.pirka.core.kernel.FieldMap;
import jp.oarts.pirka.core.win.PirkaWindow;

/**
* pirka逆引きサンプル ループの使い方
*/
public class LoopSample extends PirkaWindow {

List<ListData> list;

/**
* コンストラクタ
*/
public LoopSample() {
list = new LinkedList<ListData>();
list.add(new ListData("事務局からのお知らせ", "XYZ事務局", "2007/06/10 19:00:05", //
"明日20:00から30分ほど電気点検のため停電いたします。"));
list.add(new ListData("お振込みのご確認", "USJ銀行", "2007/06/10 13:05:23", //
"いつもご利用いただきありがとうございます。\n下記日時に、振り込みによる入金がございましたので、ご連絡いたします。"));
list.add(new ListData("[C.NET Japan Info Mail] 「エンジニアフォーラム2007」", "C.NET Japan", "2007/06/09 20:05:23", //
"※このメールはC.NET_IDご登録者の方にお送りしています。\n※各種お問い合わせは本メール末尾のご案内をお読み下さい。"));
list.add(new ListData("【kaba.com】夏のボーナス♪私なら・・・", "kaba.com", "2007/06/09 13:00:02", //
"みなさま、こんにちは。\nカバドットコム証券営業統括部の神田川と申します。\n\n本日は夏のボーナスシーズンにご検討いただきたい" //
+ "【投資信託】【プチ株】と、\n株式投資の強い味方となってくれる【kabaマシーン】等をご紹介させていただきます。"));
setLoop();
}

/**
* タイトルリンククリック処理
*/
public void titleLink() {
int[] indexs = getActionLoopIndex();

FieldMap field = getFieldMap();
field.setValue("msg", "\n" + list.get(indexs[0]).title + "\n\n" + list.get(indexs[0]).msg);
}

/**
* 削除ボタン処理
*/
public void deleteButton() {
FieldMap field = getFieldMap();
for (int i = field.getFieldMapSize("loopItem") - 1; i >= 0; i--) {
FieldMap loopField = field.getFieldMap("loopItem", i);
if (loopField.getValueBoolean("deleteFlag")) {
list.remove(i);
}
}
setLoop();
field.setValue("msg", "");
}

/**
* 戻るリンク処理
*
* @return
*/
public PirkaWindow returnWindow() {
return null;
}

/**
* ループセット
*/
private void setLoop() {
FieldMap field = getFieldMap();
field.clearFieldMap("loopItem");
int no = 1;
for (ListData data : list) {
FieldMap loopField = createLoopFieldMap("loopItem");
loopField.setValue("deleteFlag", false);
loopField.setValue("no", "" + (no++));
loopField.setValue("title", data.title);
loopField.setValue("senderName", data.senderName);
loopField.setValue("dateTime", data.dateTime);
field.addFieldMap("loopItem", loopField);
}
}

/**
* リストデータクラス
*/
class ListData implements Serializable {
public String title;

public String senderName;

public String dateTime;

public String msg;

public ListData(String title, String senderName, String dateTime, String msg) {
this.title = title;
this.senderName = senderName;
this.dateTime = dateTime;
this.msg = msg;
}
}
}

ページのTOPへ このページの先頭へ
oriental arts pirka