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

> 戻る

DTO(Map)を使用した画面入出力方法


≪サンプル説明≫  

setDtoを使用したデータパターン1の初期値設定ボタン又はsetDtoを使用した
データパターン2の初期値設定ボタンをクリックするとDTO(Mapオブジェクト)に
格納されているデータを一括で画面に設定します。

また、getDtoを使用したデータの取得ボタンをクリックすると画面に
表示されているデータを一括でDTO(Mapオブジェクト)として取得し、その値を画面下部に表示します。


≪作成時注意点≫ 

・DTO(Mapオブジェクト)のデータを画面上に一括で設定するにはPirkaWindow
 クラスのsetDtoメソッドを使用します。
 Mapオブジェクトのキー値と同名のフィールドへ値が格納されます。

 【例】// DTOオブジェクト作成
    Map<String, Object> data01 = new HashMap<String, Object>();

    // DTOオブジェクトに値設定
    data01.put("textareaItem", "データパターン1");
    data01.put("textItem", "あいうえおかきくけこ");
    data01.put("passwordItem", "abc");

    // データを画面に一括設定
    setDto(data01);

・画面上の入力フィールドのデータを一括でDTOオブジェクト(Mapオブジェクト)
 として取得するにはPirkaWindowクラスのgetDtoメソッドを使用します。
 フィールド名がMapオブジェクトのキー値として値とともに格納されます。

 【例】Map<String, Object> dto = getDto();

・ループはListオブジェクトにMapオブジェクトが格納されていることを前提とします。

・項目が存在しない場合フィールドマップ上の値の置き換えは行なわれません。
 項目が存在し値がnullのときはループは0回ループ、チェックボックスはfalse 、
 その他は空文字がセットされまする。

・Selectタグでの複数選択はTAB文字で区切られた文字列とします。

・setDtoメソッドの使用時のDTO内の値はString、Boolean、Integer、Long、Date、Time、
 Timestamp、BigDecimalのいづれかのオブジェクトを格納してください。

・getDtoメソッドの時は基本的にチェックボックス以外の入力情報はStringオブジェクト、
 チェックボックスはBooleanオブジェクトとして値が格納されます。

・フィールド名とキー名の変更や他のクラスオブジェクトに変更してMapオブジェクトを作成
 したいときなどはコンバーターを設定することにより可能となります。


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

<html>
<head>
<title>pirka逆引きサンプル DTO(Map)を使用した画面入出力方法</title>
</head>
<body>
<center>
<span style="color: #8080ff">pirka逆引きサンプル DTO(Map)を使用した画面入出力方法</span><br>
<hr>
<form name="formItem" method="post">
<table border="1">
<tr>
<td>テキストエリア</td>
<td><textarea name="textareaItem" rows="2" cols="50">textareaでは初期値は無視されます</textarea></td>
</tr>
<tr>
<td>テキスト</td>
<td><input type="text" name="textItem" value="textでは初期値は無視されます"></td>
</tr>
<tr>
<td>パスワード</td>
<td><input type="password" name="passwordItem" value="passwordでは初期値は無視されます"></td>
</tr>
<tr>
<td>ラジオボタン</td>
<td>
<input type="radio" name="radioItem$01" value="R01" id="id_radioItem01"><label name="labelRadioItem01" for="id_radioItem01">選択01</label>&nbsp;&nbsp;
<input type="radio" name="radioItem$02" value="R02" checked id="id_radioItem02"><label name="labelRadioItem02" for="id_radioItem02">選択02</label>&nbsp;&nbsp;
<input type="radio" name="radioItem$03" value="R03" id="id_radioItem03"><label name="labelRadioItem03" for="id_radioItem03">選択03</label>
</td>
</tr>
<tr>
<td>チェックボックス</td>
<td><input type="checkbox" checked name="checkboxItem" id="id_checkboxItem"><label name="labelheckbox" for="id_checkboxItem">選択</label></td>
</tr>
<tr>
<td>一覧</td>
<td>
<select name="selectItem">
<option value="A">項目 A</option>
<option value="B" selected>項目 B</option>
<option value="C">項目 C</option>
</select>
</td>
</tr>
<tr>
<td>ループ</td>
<td>
<table border="1">
<tr>
<th>No.</th>
<th>name</th>
<th>select</th>
</tr>
<div type="loop" name="loop">
<tr>
<td><span name="loopNo"></span></td>
<td><input type="text" name="loopnName"></td>
<td><input type="checkbox" name="loopnSelect"></td>
</tr>
</div>
</table>
</td>
</tr>
</table>
<br><br>
<input type="submit" name="set01Button" value="setDtoを使用したデータパターン1の初期値設定">&nbsp;&nbsp;
<input type="submit" name="set02Button" value="setDtoを使用したデータパターン2の初期値設定"><br><br>
<input type="submit" name="getButton" value="getDtoを使用したデータの取得"><br><br>
<table>
<tr><td>【取得データ】</td></tr>
<tr><td>
<pre><span name="message"></span></pre>
</td></tr>
</table>
</form>
<hr>
<a name="returnWindow" href="">戻る</a>
</center>
</body>
</html>



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

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

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

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

/**
* pirka逆引きサンプル DTO(Map)を使用した画面入出力方法
*/
public class DtoSample extends PirkaWindow {

// データパターン1
Map<String, Object> data01;

// データパターン2
Map<String, Object> data02;

/**
* コンストラクタ
*/
public DtoSample() {

// データパターン1の作成
data01 = new HashMap<String, Object>();
data01.put("textareaItem", "データパターン1");
data01.put("textItem", "あいうえおかきくけこ");
data01.put("passwordItem", "abc");
data01.put("radioItem", "R01");
data01.put("checkboxItem", false);
data01.put("selectItem", "A");
List<Map<String, Object>> loop01 = new ArrayList<Map<String, Object>>();
data01.put("loop", loop01);
for (int i = 0; i < 2; i++) {
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("loopNo", i + 1);
data.put("loopnName", "パターン01項目" + (i + 1));
data.put("loopnSelect", false);
loop01.add(data);
}

// データパターン2の作成
data02 = new HashMap<String, Object>();
data02.put("textareaItem", "データパターン2");
data02.put("textItem", "さしすせそたちつてと");
data02.put("passwordItem", "vwxyz");
data02.put("radioItem", "R02");
data02.put("checkboxItem", true);
data02.put("selectItem", "B");
List<Map<String, Object>> loop02 = new ArrayList<Map<String, Object>>();
data02.put("loop", loop02);
for (int i = 0; i < 4; i++) {
HashMap<String, Object> data = new HashMap<String, Object>();
data.put("loopNo", i + 1);
data.put("loopnName", "パターン02項目" + (i + 1));
data.put("loopnSelect", true);
loop02.add(data);
}
}

/**
* setDtoを使用したデータパターン1の初期値設定ボタン処理
*/
public void set01Button() {
// データパターン1を画面に設定
setDto(data01);
}

/**
* setDtoを使用したデータパターン2の初期値設定ボタン処理
*/
public void set02Button() {
// データパターン2を画面に設定
setDto(data02);
}

/**
* getDtoを使用したデータの取得ボタン処理
*/
public void getButton() {

// 画面のデータをMapに取得
Map<String, Object> dto = getDto();

// 取得したデータを表示
FieldMap field = getFieldMap();
field.setValue("message", toString(dto));
}

private String toString(Map<String, Object> dto) {

StringBuilder sb = new StringBuilder();
sb.append("textareaItem=");
sb.append(dto.get("textareaItem"));
sb.append("\n");
sb.append("textItem=");
sb.append(dto.get("textItem"));
sb.append("\n");
sb.append("passwordItem=");
sb.append(dto.get("passwordItem"));
sb.append("\n");
sb.append("radioItem=");
sb.append(dto.get("radioItem"));
sb.append("\n");
sb.append("checkboxItem=");
sb.append(dto.get("checkboxItem"));
sb.append("\n");
sb.append("selectItem=");
sb.append(dto.get("selectItem"));
sb.append("\n");

List<Map<String, Object>> loop = (List<Map<String, Object>>) dto.get("loop");
for (Map<String, Object> loopDto : loop) {
sb.append("loopNo=");
sb.append(loopDto.get("loopNo"));
sb.append(", ");
sb.append("loopnName=");
sb.append(loopDto.get("loopnName"));
sb.append(", ");
sb.append("loopnSelect=");
sb.append(loopDto.get("loopnSelect"));
sb.append("\n");
}
return sb.toString();
}

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

}

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