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>
<input type="radio" name="radioItem$02" value="R02" checked id="id_radioItem02"><label name="labelRadioItem02" for="id_radioItem02">選択02</label>
<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の初期値設定">
<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>
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;
}
}