[Seasar-user:18013] [teeda] ダイナミックプロパティにて入力値より表示を制御するには
木村 究道
[E-MAIL ADDRESS DELETED]
2009年 7月 16日 (木) 11:58:35 JST
お世話になっております、木村と申します。
早速ですが、ダイナミックプロパティにて入力値を元に
表示内容を制御しようとしていますが、アノテーション
でエラーになった時、意図した制御ができません。
やりたいことは、入力項目がAとBとあって、Aを入力さ
れたら、Bを入力不可にしようとしています。
制御方法は以下のようにしています。
Page側:ダイナミックプロパティにてAが入力されていたらBを disabled にする。
HTML側:Aが入力され、フォーカスが移ったらJavaScriptにてBを disabled にする。
この状態で、Aに入力したらBが入力不可状態となりますが
アノテーションエラーで再表示されると、Aに入力した値
はそのままですが、Bが入力可能な状態に戻ってしまいます。
サンプルでは、bbbが入力されたらcccを入力不可にしよう
としています。
そして、aaaでアノテーションエラーを出すと再現します。
アノテーションエラー時も状態を保てる方法ないでしょう
か?よろしくお願い致します。
バージョン
・Seasar2 2.4.34
・Teeda 1.0.13-sp6
--サンプル------------------------
public class DynamicPropertyPage {
@Required
private String aaa;
private String no;
private String bbb;
private String ccc;
private DynamicPropertyDto[] testItems;
public String initialize() {
this.testItems = new DynamicPropertyDto[3];
DynamicPropertyDto testDto1 = new DynamicPropertyDto();
testDto1.setNo ("A1");
testDto1.setBbb("");
testDto1.setCcc("");
this.testItems[0] = testDto1;
DynamicPropertyDto testDto2 = new DynamicPropertyDto();
testDto2.setNo ("A2");
testDto2.setBbb("bbb");
testDto2.setCcc("");
this.testItems[1] = testDto2;
DynamicPropertyDto testDto3 = new DynamicPropertyDto();
testDto3.setNo ("A3");
testDto3.setBbb("");
testDto3.setCcc("ccc");
this.testItems[2] = testDto3;
return null;
}
public String doTest() {
return null;
}
/* ダイナミックプロパティ */
public boolean getCccDisabled() {
if (this.bbb == null || this.bbb.equals("")) {
return false;
} else {
return true;
}
}
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>DynamicProperty</title>
<script type="text/javascript">
function bbbCh(el) {
var cccEl = el.form[el.name.substring(0, el.name.lastIndexOf(':')) + ":ccc"];
if (el.value == "") {
cccEl.disabled = false;
} else {
cccEl.value = "";
cccEl.disabled = true;
}
}
</script>
<style>
.onTeedaError {
background-color: #FFCCCC;
}
</style>
</head>
<body>
<form id="DynamicPropertyForm">
<input type="hidden" id="testItemsSave"/>
<span id="allMessages" /><br/>
AAA: <input type="text" id="aaa" /><br/>
<table border="1">
<thead>
<tr>
<th>No </th>
<th>BBB</th>
<th>CCC</th>
</tr>
</thead>
<tbody id="testItems">
<tr>
<td><span id="no" /></td>
<td><input id="bbb" onblur="bbbCh(this);" /></td>
<td><input id="ccc" disabled="" /></td>
</tr>
</tbody>
</table>
<br/>
<input type="submit" value="test" id="doTest"/>
</form>
</body>
</html>
--
-----------------------------------------------------
十八ソフトウェア株式会社
システム開発部 アプリケーション開発課 木村 究道
〒850-0861 長崎市江戸町6-5江戸町センタービル6F
TEL:095-824-0018 FAX:095-827-8754
E-mail: [E-MAIL ADDRESS DELETED]
-----------------------------------------------------
Seasar-user メーリングリストの案内