Slim3のValidatorを使う | sola's note

sola's note

日ごろのメモを書いていきます。何か新しいものを作るために。

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は必須です。」

となります。