FreeMarkerでいわゆるフォームのバリデーション+エラーメッセージ表示を試してみたので、そのまとめをば。サンプルコードはGitHubにあげてある。Validatorは5.0.1.Finalというのが最新なんだけど、これを使うとWebアプリ起動時にNoClassDefFoundErrorで怒られてしまったので1世代古いやつを使ってる。普通のWebアプリだとバリデーションがOKだったらデータベース更新したりするだしょう。処理が完了したら完了画面へHTTPリダイレクトする。説明をシンプルにするために、今回はCSRF対策は省いてる。application-context.xml的なヤツここを参照。Validation関連で必要なのは下記の2つ。FormController今回用意したControllerは下記のようなシンプルなもの。バリデーションを行なっている。"/form/complete";}}UserFormこんな感じのBeanを作る。プロパティに対してアノテーションをつけて、どんなバリデーションをかけるかを定義する。使えるアノテーションに関してはここなどを参照。Validatorのアノテーションも使わざるを得ないかなぁと思った。マクロを使うことでフォームのタグを生成できる。詳細はSpringMVCのドキュメントを参照。いうマクロで、エラーがあった場合にエラーメッセージを表示させる。バリデーションエラーが複数ある場合もあるので、複数のエラーメッセージがここに表示される。1つ目の引数はエラーメッセージを区切る文字列。<br>タグなので改行で区切っている。タグのCSSスタイル。いうクラス指定になるみたい。↓は実際にバリデーションエラーが起きた時の入力画面のキャプチャ。フォーム完了画面これはただの完了画面なので説明不要。Validator付属の英語のメッセージが表示されるので、ValidationMessages_ja.propertiesという名前のプロパティファイルを用意してクラスパスの通ったところに置いておけばいいらしい。軽く使ってみた感想や疑問などいくつか使いづらいところや疑問があった。なっていて不自然なので、@MaxSizeや@MinSizeとかあった方がいいんじゃないかFTLの中で「バリデーションエラーが起こっているか」を判定する方法がよくわからなかった。(@springのマクロにはそれっぽいものはなかった)FTLの中で「フォームの全ての入力項目のエラーをまとめて表示させたい」んだけど、どうやるのがいいのかわからない。ControllerでModelに全エラーメッセージをつっこんだListをセットすればいいのかなぁでも、全体的に見るといい仕組みとしてはだと思う。使いづらいところは自分で拡張もできるっぽいので。いうわけで仕事でもこれを使っていこうと思う。