GWT のサービスで Slim3 の Validators を使う方法

Slim3 はシンプルなバリデーションフレームワークを提供しています。

Controller に渡された Request の中身を検証するのに使うわけですが、これを Slim3 + GWT で開発しているときにも使いたいと思いました。厳密には、Service に渡された Map を検証するのに使いたいのです。


Slim3 が提供するバリデーションフレームワークの中心的なクラス Validators は、コンストラクタで検証対象のデータを受け取ります。受け取るデータは Request のほかに、Map も OK。なんだ、使えるじゃないですか。そう簡単に考えていたら、ちょっとつまずきました。とにかく、サンプルコードをどうぞ。

public class EntryServiceImpl implements EntryService {
    public void createEntry(Map<String, Object> input) {
        // Errors インスタンスが格納されてないとダメ
        input.put(ControllerConstants.ERROR_KEY, new Errors());

        // 検証したいデータをコンストラクタで渡す
        Validators v = new Validators(input);
        v.add("title", v.required());
        if (v.validate()) {
            // 成功したときの処理
        }
    }
}

Validators に渡す Map には、Errors クラスのインスタンスを、決まったキーで入れておく必要があります。Slim3 のソースコードを読んで気づいたんですけどね。


入ってなければ追加してくれればいいのに、なんて思ったのは内緒です。