While a couple of months have passed since Bean Validation 2.0 got released, the info about what’s new in the spec may still not yet have reached everyone. Here are two...
While a couple of months have passed since Bean Validation 2.0 got released, the info about what’s new in the spec may still not yet have reached everyone. Here are two...
その名のとおりJavaBeansの為のValidationの仕様であるJSR303ですが、近頃でもないですがHibernateはもちろん、その他SpringやOvalなどの周辺フレームワークの対応が進んでずいぶん使いやすくなってきました。 ところでアプリケーション作っててValidationの仕組みって毎回悩みませんか?私がJavaでWebアプリケーションつくりはじめた頃なんかだとStruts1.xが全盛期でvalidation.xml、validation-rule.xmlとか使って書いてましたが(今考えれば二度とやりたくないですねw)、今でも毎回どのチェックをどのレイヤ(アプリケーションレイヤ?ドメインレイヤ?)に持たせるかとか、データストアに問い合わせしないといけないValidationって画面の入力だけでチェックできるのとどう管理しようかなとか、色々と悩むこともしばしばです。最近D
そういやいっちばん基本的なことだったのに書いてなかったな。 コンバータは以前書いたのでバリデータも同様に作ることができる。 でも、ここはJSFのバリデータを呼ぶのではなく、Java EE 6らしくバリデーションも標準化されたBeanValidationを利用したい。BeanValidationはJavaSE単体でも使えるし、JPA 2.0やSpring Framework 3、もちろんRIであるHibernateでも利用できる。いまや標準的なバリデーション機能となった。覚えておいて損はあるまい。 というわけで今回はJSF2 + BeanValidationの組み合わせで入力検証を行う。過去のJSFとBean Validationのエントリをあわせればいいだけだけれども。 javaコード package jsf; import javax.faces.bean.ManagedBean; im
Default message interpolation デフォルトメッセージ補完の説明をします。 バリデーションアノテーションはmessageプロパティが必須です。 そのmessageプロパティにセットされたトークンが補完対象のメッセージとなります。 補完対象のトークンは"{}"で囲まれている必要があります。そうでない場合はリテラルとみなされます。 また"{"のエスケープは"\\{"と記述し、同様にまた"}"のエスケープは"\\}"と記述します。 メッセージ補完のためのパラメータは「ValidationMessages.properties」に記述されたキーかアノテーションのプロパティが対象となります。 例えば以下のようなアノテーションとプロパティーメッセージを定義されていた場合 検証結果が不正だったときに「Value size must be between 0 and 10」のメッ
Creating custom constraint annotations カスタムバリデーション用アノテーションの作成を説明します。 まず、カスタムのアノテーションを定義します。 アノテーションには以下のアノテーションを付加する必要があります。 ・@Target( { METHOD, FIELD, ANNOTATION_TYPE }) :アノテーションを付加する対象をメソッド、フィールド、アノテーションとして指定します。 ・@Retention(RUNTIME):バイトコードにアノテーションを含めます。 ・@Constraint(validatedBy = MaxValidator.class):アノテーションの検証用クラスを指定します。検証用クラスは後ほど説明します。 次に必須のアノテーションプロパティを定義します。 String message() default "{valida
Using Bean Validation with Spring(Springで利用する場合) 標準の使い方はValidation APIより デフォルトバリデーションファクトリを生成します。 次にファクトリよりバリデーションを取得します。 ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); Springで使用する場合の設定はバリデーションファクトリの生成、バリデーションの生成をapplicationContext.xmlに登録します。 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/sche
http://d.hatena.ne.jp/shin/20100112/p5 http://d.hatena.ne.jp/shin/20100113/p1 http://d.hatena.ne.jp/shin/20100114/p5 の続き。 今回はバリデーショングループについて。 たとえばバリデーションをするときにこの新規作成時のタイミングではここはチェックを行わないけど、次にUpdateで呼ばれたときはここはチェックをするといったことがよくある。ここもBean Validationは定義してある。 それがバリデーショングループだ。 使い方 まず適当にインターフェースを作る。 public interface FooGroup { } それをbeanに指定する。 @DecimalMax(value="29",groups={FooGroup.class},message="20代までOK
http://d.hatena.ne.jp/shin/20100112/p5 http://d.hatena.ne.jp/shin/20100113/p1 の続き。 今回は階層構造にあるBeanのバリデーションをしてみる。 たとえばBeanの中にListがあり、そのListで別のBeanをn件保持するというのはよくあることだと思う。 そして子も親と一緒に検証したいということもよくあることかと。 もちろんBean Validationでもそれは可能だ。 子のクラス。 public class InputBean2 { @Digits(integer=5,fraction=0)//5桁正数のみということ @NotNull BigDecimal data; public InputBean2() { } public InputBean2(BigDecimal data) { this.data
http://d.hatena.ne.jp/shin/20100112/p5 の続き。 今回はカスタムバリデーションを作ってみる。 とはいえ、細かいバリデーションはアプリケーションのバリデーションとして実装すると思うので、数値チェックであるとか必須チェックとかシンプルな範囲だけだから、多少作ってしまったらそれだけでいいと思うけど。 今回は必須入力チェック専用のバリデータを作ってみる。Nullも長さゼロの文字列もどちらもはじくという処理。@NotNullと@Size(min=1)アノテーションをつければいいだけではあるが。作るクラスは2つ。 アノテーションとそのアノテーションに対応したバリデーション実装クラス。 これらのクラスは相互に参照するので普通に打ち込むと先に書いたほうがコンパイルエラーになるのでアノテーションからバリデーション実装クラスへの参照部分は最初はなしでやったほうがいいかもね
Java EE 6のJavadocみていたら(NetBeansにはJava EEのドキュメントも付属している)javax.validationパッケージがあった。 そうだ、こいつもきていたんだった。 というわけでBean Validation (JSR-303)を触ってみる。 こいつはBeanに対する値のチェックをするライブラリである。 検査対象Bean public class InputBean { @NotNull(message="なんかいれろ") String data; public String getData() { return data; } public void setData(String data) { this.data = data; } } バリデーションする側。今回はサーブレットでやってる。 @WebServlet(name="ValidateServl
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く