[Seasar-user:12253] [Teeda] ForEachにて表示したボタンでsubmitした場合について
木村 究道
[E-MAIL ADDRESS DELETED]
2007年 12月 21日 (金) 17:20:26 JST
いつもお世話になっております。木村と申します。
もしかしたら特殊な例かもしれませんが、ある条件下で
ForEachにて表示したボタンでsubmitした際、アノテー
ションおよびメソッドが実行されません。
一セットのhtml・Pageクラスで参照・新規登録・編集を
行っています。
画面には一覧と詳細を表示して、一覧に用意したボタン
をクリックすることにより、詳細の表示内容を切替えて
います。
編集画面でも、同じように編集対象を一覧のボタンによ
り切替えられるようにしていますが、編集画面で切替え
る場合は、変更内容を更新して、切替えるようにしよう
としています。
この際に、必須チェックのアノテーションおよびメソッ
ドが実行されません。
照会画面では対象のメソッドが実行されています。
Eclipseのデバックで、TargetCommandUtilクラスの、
getCommandメソッドでボタンのid名が取れていないとこ
ろまで確認しましたが、ここで挫折してしまいました。
何か考えられる原因はありませんでしょうか?
よろしくお願い致します。
HTML
---------------------------------------------------------------------------
<html>
<head>
<title>テストページ</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<script type="text/javascript">
function setIndex(name) {
var hidden = name.substring(0, name.lastIndexOf(':'));
var f = document['javascriptForm'];
f.clickIndex.value = Number(f[hidden + ':userIndex-hidden'].value);
//alert(f.clickIndex.value);
}
</script>
</head>
<body>
<form name="test" id="javascriptForm">
<input type="hidden" id="crudType"/>
<input type="hidden" id="clickIndex"/>
<input type="hidden" id="userItemsSave"/>
<!--=================================================================================================================-->
<!-- body start -->
<span style="font-size: 5pt;"><br/></span>
一覧<br/>
<table border="1">
<tr>
<th>No.</th>
<th>コード</th>
<th>名前</th>
<th>パスワード</th>
<th>ボタン</th>
</tr>
<div id="userItems">
<tr>
<td><span id="userIndex-span" /></td>
<td><span id="items_code" /></td>
<td><span id="items_name" /></td>
<td><span id="items_pass" /></td>
<td>
<div id="isRead-items"><input id="doTestRead" type="button" value="select" onclick="setIndex(this.name);"/></div>
<div id="isEdit-items"><input id="doTestEdit" type="button" value="select" onclick="setIndex(this.name);"/></div>
<input type="hidden" id="userIndex-hidden"/>
</td>
</tr>
</div>
</table>
<br/>
<div id="isRead-detail">
詳細(照会)<br/>
<table>
<tr><td><span id="code" /></td></tr>
<tr><td><span id="name" /></td></tr>
<tr><td><span id="pass" /></td></tr>
<tr><td> </td></tr>
<tr><td><input id="doNew" type="button" value="New" /></td></tr>
<tr><td><input id="doEdit" type="button" value="Edit"/></td></tr>
</table>
</div>
<div id="isNew-detail">
詳細(新規)<br/>
<table>
<tr><td><input id="code" /></td></tr>
<tr><td><input id="name" /></td></tr>
<tr><td><input id="pass" /></td></tr>
<tr><td> </td></tr>
<tr><td><input id="doInsert" type="button" value="Insert"/></td></tr>
<tr><td><input id="doCancel" type="button" value="Cancel"/></td></tr>
</table>
</div>
<div id="isEdit-detail">
詳細(編集)<br/>
<table>
<tr><td><span id="code" />
<input id="code-hidden" type="hidden" /></td></tr>
<tr><td><input id="name" /></td></tr>
<tr><td><input id="pass" />
<input id="passHidden" type="hidden" /></td></tr>
<tr><td> </td></tr>
<tr><td><input id="doUpdate" type="button" value="Update"/></td></tr>
<tr><td><input id="doCancel" type="button" value="Cancel"/></td></tr>
</table>
</div>
<input id="nowIndex" type="hidden" />
<!-- body end -->
<span id="allMessages"></span><br/>
</form>
</body></html>
---------------------------------------------------------------------------
Pageクラス
---------------------------------------------------------------------------
public class TestPage {
public static final int READ = 1; // 参照
public static final int NEW = 2; // 新規
public static final int EDIT = 3; // 編集
protected int crudType = 1; // 画面状態
// 一覧
private String items_code;
private String items_name;
private String items_pass;
private ArrayList<Map<String, String>> userItems;
private Integer userIndex;
// 詳細
@Required(target="doInsert")
private String code;
@Required(target="doInsert, doUpdate")
private String name;
@Required(target="doInsert")
private String pass;
private String passHidden;
private int nowIndex = 0;
private int clickIndex = 0;
public Class initialize() {
this.userItems = new ArrayList<Map<String, String>>();
Map<String, String> map1 = new TreeMap<String, String>();
map1.put("items_code", "0001");
map1.put("items_name", "テスト1");
map1.put("items_pass", "pass01");
this.userItems.add(map1);
Map<String, String> map2 = new TreeMap<String, String>();
map2.put("items_code", "0002");
map2.put("items_name", "テスト2");
map2.put("items_pass", "pass02");
this.userItems.add(map2);
Map<String, String> map3 = new TreeMap<String, String>();
map3.put("items_code", "0003");
map3.put("items_name", "テスト3");
map3.put("items_pass", "pass03");
this.userItems.add(map3);
Map<String, String> map4 = new TreeMap<String, String>();
map4.put("items_code", "0004");
map4.put("items_name", "テスト4");
map4.put("items_pass", "pass04");
this.userItems.add(map4);
return null;
}
public Class prerender() {
if (this.crudType == NEW) {
this.code = "";
this.name = "";
this.pass = "";
} else {
Map<String, String> mapWork = this.userItems.get(this.clickIndex);
this.code = mapWork.get("items_code");
this.name = mapWork.get("items_name");
this.pass = mapWork.get("items_pass");
this.passHidden = this.pass;
this.nowIndex = this.clickIndex;
}
return null;
}
public String doTestRead(){
return null;
}
public String doTestEdit(){
Map<String, String> mapWork = new TreeMap<String, String>();
mapWork.put("items_code", this.code);
mapWork.put("items_name", this.name);
if (this.pass == null || this.pass.equals("")) {
this.pass = this.passHidden;
}
mapWork.put("items_pass", this.pass);
this.userItems.set(this.nowIndex, mapWork);
return null;
}
public String doNew() {
this.crudType = NEW;
return null;
}
public String doEdit() {
this.crudType = EDIT;
return null;
}
public String doInsert() {
Map<String, String> mapWork = new TreeMap<String, String>();
mapWork.put("items_code", this.code);
mapWork.put("items_name", this.name);
mapWork.put("items_pass", this.pass);
this.userItems.add(mapWork);
this.crudType = READ;
return null;
}
public String doUpdate() {
Map<String, String> mapWork = new TreeMap<String, String>();
mapWork.put("items_code", this.code);
mapWork.put("items_name", this.name);
if (this.pass == null || this.pass.equals("")) {
this.pass = this.passHidden;
}
mapWork.put("items_pass", this.pass);
this.userItems.set(this.nowIndex, mapWork);
this.crudType = READ;
return null;
}
public String doCancel() {
this.crudType = READ;
return null;
}
public boolean isRead() {
if (this.crudType == READ) {
return true;
}
return false;
}
public boolean isNew() {
if (this.crudType == NEW) {
return true;
}
return false;
}
public boolean isEdit() {
if (this.crudType == EDIT) {
return true;
}
return false;
}
getter/setter 省略
---------------------------------------------------------------------------
--
-----------------------------------------------------
十八ソフトウェア株式会社
システム開発部 アプリケーション開発課 木村 究道
〒850-0861 長崎市江戸町6-5江戸町センタービル6F
TEL:095-824-0018 FAX:095-827-8754
E-mail: [E-MAIL ADDRESS DELETED]
-----------------------------------------------------
Seasar-user メーリングリストの案内