GAEでSlim3を使った入力チェックをする時。
そんな時は、Validatorが良い仕事します。
Slim3でバリデーションによるチェックを行うときは、
org.slim3.controller.validator.Validators
を使います。
Validatorのインスタンス生成時の引数には、requestを入れるので、
処理を行うのはControllerが主になるのではないかと思います。
//引数にリクエストを入れる。
Validators v = new Validators(request);
インスタンスを生成したら、入力チェック条件を設定します。
引数に設定したrequestのパラメータを対象に入力チェック条件を指定しますが、
この時、第一引数にはチェック対象のパラメータ名を指定します。
//必須、最小、最大、半角英数字のチェック
v.add("id", v.required(), v.minlength(4), v.maxlength(30), v.regexp("^[\\w]+$"));
//二つ同時にやるときは同じように記述
v.add("pass", v.required(), v.minlength(6), v.maxlength(30), v.regexp("^[\\w]+$"));
ここで「"id"」と「"pass"」はリクエストパラメータ名。
チェック対象にした後は、チェック処理を実行します。
if (v.validate()) {
//OKな場合
} else {
System.out.println(v.getErrors().get("id"));
System.out.println(v.getErrors().get("pass"));
}
今回は実際に使用するわけではないのでコンソール出力です。
必要に応じて変更して下さい。
エラーメッセージとして出力されるメッセージは
以下のファイルで設定されています。
src/application_ja.properties
src/application_en.properties
この場合、
必須チェックでエラーだと、
src/application_ja.propertiesの内容がデフォルトで
validator.required={0}は必須です。
となっているので、
出力内容は
「は必須です。」
となります。
この時、パラメータ名と{0}に埋め込む値のペアを設定しておくことで、
自動的に文字列が埋め込まれます。
ペアの設定方法は
src/application_ja.propertiesに
label.id=ID
を追加することで出来ます。
(この場合idはパラメータ名、IDが埋め込む値です)
設定後、もう一度空値でsubmitすると、
「IDは必須です。」
となります。