項目01、項目02に値を入力し実行ボタンをクリックしてください。
項目01は未入力時に、項目02は漢字以外が入力された時(未入力はOK)にエラーが表示されます。
エラーが存在しないときはOK画面が表示されます。
≪作成時注意点≫
・自動チェックを行うにはコンストラクタでaddCheckメソッドを使用してチェッカーを登録します。
・チェックはチェッカーの登録順に行われます。
・チェックでエラーとなったときアクションイベントを呼び出さないようにするには
チェック登録の最後にaddErrorCheckReturnerメソッドを呼び出しリターナーを登録してください。
・HTMLファイル中にname="errorMessage"のSPANタグが存在するとエラーメッセージがその領域に
自動的に表示されます。
・エラーとなった項目は標準ではバックカラーが赤色にエラー強調されます。
・入力フィールドのID属性と同じ値のfor属性を持つLABELタグもエラー強調されます。
・定義済みのチェッカーとしてPirkaCheckerの各種オブジェクトやクラスが存在します。
詳細はマニュアル等を参照してください。
・以下にチェッカーの登録例を示します。
【例】
・HTMLファイル
<span name="errorMessage" style="color: #ff0000"></span>
<label name="label_text01" for="id_text01">項目01</label>
<input type="text" name="text01" id="id_text01"> 未入力チェック<br>
<label name="label_text02" for="id_text02">項目02</label></td>
<input type="text" name="text02" id="id_text02">漢字のみ入力可能
<input type="submit" name="addButton" value="登録">
・コンストラクタ
addCheck("text01", PirkaChecker.required);
addCheck("text02", new PirkaCheckerString(PirkaCheckerStringChars.WIDE));
addErrorCheckReturner();
・また、setOfficialFieldNameメソッドを使用してフィールドに日本語フィールド名を
を設定することができます。これはエラーメッセージの項目名に使用されます。
【例】FieldMap field = getFieldMap();
field.setOfficialFieldName("text01", "項目01");
field.setOfficialFieldName("text02", "項目02");
・自動チェックが行われるアクションメソッドはsubmitボタン、イメージボタン
等のブラウザーより入力データがWEBサーバに送信されるときのみです。
リンク(Aタグ)等ではデータが送信されないため自動チェックは行われません。
また、JavascriptでFORMオブジェクトのsubmitメソッドを実行した時も自動エラー
チェックは行われないのでご注意ください。
この場合はonElseメソッドの先頭でcheckメソッドを呼び出すことにより自動チェックと
同じチェックを行うことができます。
詳細はJavascriptのsubmitでのイベント処理を参照して下さい。
ソースファイル
AutoCheckSample.html サンプル画面のHTMLファイル
<html>
<head>
<title>pirka逆引きサンプル 自動チェックの指定方法</title>
</head>
<body>
<center>
<span style="color: #8080ff">pirka逆引きサンプル 自動チェックの指定方法</span><br>
<hr>
<br>
<form name="sampleForm" method="post">
<table border="1">
<tr>
<td colspan="3">
<span name="errorMessage" style="color: #ff0000"></span>
</td>
</tr>
<tr>
<td><label name="label_text01" for="id_text01">項目01</label></td>
<td><input type="text" name="text01" id="id_text01"></td>
<td>未入力チェック</td>
</tr>
<tr>
<td><label name="label_text02" for="id_text02">項目02</label></td>
<td><input type="text" name="text02" id="id_text02"></td>
<td>漢字のみ入力可能</td>
</tr>
<tr>
<td><label name="label_text03" for="id_text03">項目03</label></td>
<td><input type="text" name="text03" id="id_text03"></td>
<td>Mail</td>
</tr>
<tr>
<td><input type="submit" name="execButton" value="実行"></td>
<td></td>
<td></td>
</tr>
</table>
</form>
<hr>
<a name="returnWindow" href="">戻る</a>
</center>
</body>
</html>
package jp.oarts.pirka.sample.instruction.is102200;
import jp.oarts.pirka.core.kernel.FieldMap;
import jp.oarts.pirka.core.util.check.PirkaChecker;
import jp.oarts.pirka.core.util.check.PirkaCheckerString;
import jp.oarts.pirka.core.util.check.PirkaCheckerStringChars;
import jp.oarts.pirka.core.win.PirkaWindow;
/**
* pirka逆引きサンプル 自動チェックの指定方法
*/
public class AutoCheckSample extends PirkaWindow {
/**
* コンストラクタ
*/
public AutoCheckSample() {
// 正式な項目名(日本語名)の設定
FieldMap field = getFieldMap();
field.setOfficialFieldName("text01", "項目01");
field.setOfficialFieldName("text02", "項目02");
// チェッカーのセット
addCheck("text01", PirkaChecker.required);
addCheck("text02", new PirkaCheckerString(PirkaCheckerStringChars.WIDE));
addErrorCheckReturner();
}
/**
* 実行ボタン処理
*
* @return 次ウインドウ
*/
public PirkaWindow execButton() {
return new AutoCheckOkSample();
}
/**
* 戻るリンク
*
* @return
*/
public PirkaWindow returnWindow() {
return null;
}
}
<html>
<head>
<title>pirka逆引きサンプル 自動チェックの指定方法 OK画面</title>
<meta http-equiv="Content-Type" content="text/html; charset=MS932">
</head>
<body>
<BR>
<center>
<span style="color: #8080ff">pirka逆引きサンプル 自動チェックの指定方法 OK画面</span><br>
<hr>
<font color="#c0c0c0">
エラーはありません
</font>
<form name="testForm" method="post">
<input type="submit" name="returnButton" value="戻る">
</form>
</center>
</body>
</html>
package jp.oarts.pirka.sample.instruction.is102200;
import jp.oarts.pirka.core.win.PirkaWindow;
/**
* pirka逆引きサンプル 自動チェックの指定方法 OK画面
*/
public class AutoCheckOkSample extends PirkaWindow {
/**
* 戻るボタン処理
* @return 次ウインドウ
*/
public PirkaWindow returnButton() {
return null;
}
}