Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?
フォームバリデーションを行うにあたり、Bean Validation APIの標準の制約(@Size、@Patternなど)はとても便利ですが、いざ業務で利用するとなるとカスタマイズしたくなります。 そこで、実際の業務で利用できそうなカスタマイズをいくつかやってみたいと思います。 1. 標準の制約を組み合わせる 2. 独自のチェック機能を実装した制約を作成する 3. 相関チェックをフォームクラスに実装する 4. 相関チェックをバリデーターに実装する 5. バリデーターからアノテーションを利用する ちょっとボリュームが多くなってしまったので、前編で1から3を、残りを後編に分けたいと思います。 環境 Spring Framework 4.3.2 Thymeleaf 3.0.0 GlassFish Server Open Source Edition 4.1 JDK 1.8 MyBatis 3.
ここでは相関バリデーションを、「2つの値の関係性をバリデーションする」とする。 たとえば、日付で開始日と終了日があって開始日 < 終了日とならなくてはならない、など。 Bean Validation 1.1の仕様には、相関バリデーションはなさそう。ただ、Hibernate Validator自体には相関バリデーション用の実装があったので、それが使える。 <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <version>5.2.2.Final</version> </dependency> サンプルとして、Spring MVCでMethod Validationするものを使う。SpringでMethod Validationする設定ははこちら。 jyukuty
このエントリは Java EE Advent Calendar 2013 の3日目です。 昨日は @matsumana さんのご担当で JAX-RS + mustache - @matsumana の技術メモ でした。 今回はBeanValidationの自分なりの使い方をご紹介します。 その前に BeanValidationてなんや?という方は JSR 349 の仕様を読むと良いでしょう。 200ページ超えてますが半分以上コードっぽいのでそんなにしんどくないんじゃないかと思わなくもないけどどうでしょうか? もしくは「BeanValidation しんさん」でググると良いですよ。 本題 BeanValidationではフィールドやgetterに@NotNullとか@Sizeとかアノテーションをモリモリ付けてバリデーションするわけですが、調子に乗ってるとすぐアノテーション地獄になってキツいの
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
Bean ValidationのGroup sequenceは単項目チェック、相関チェックの順序指定で使うのは止めた方が良さそうJavaBeanValidation Bean Validationの相関チェックについて これはVaidation Nightの補足記事。 http://www.slideshare.net/eiryu/javabean-validation Validation Nightで「Bean Validationの相関チェックは、メソッドに@ AssertTrueつけて書く」と言った。 その際に、バリデーションの順番がランダムなため、単項目チェックより相関チェックが先に実行されることを想定してコードを書く必要があるということにも言及した。 具体的には以下のような感じ。 public class UserForm { // 略 @javax.validation.co
BeanValidationで相関バリデーションするときに新しいメソッド作って@AssertTrueを使うよ! っていう話があったので、それについて思う事を書きます。 なお、以下はWebアプリケーションでリクエストパラメータをPOJOにマッピングして BeanValidationを行うという流れを想定しています。
Posted on 2014-04-01 · Tagged in bean validation, internationalization, java, jax-rs, jboss I have already approached this subject twice in the past. First, on my post Integrating Bean Validation with JAX-RS in Java EE 6, describing how to use Bean Validation with JAX-RS in JBoss AS 7, even before this was defined in the Java EE Platform Specification. And later, on an article written for JAX Maga
Hibernate Validator 4はJSR303 - Bean Validationの参照実装で、JavaBeansに対するバリデーションフレームワークです。かなり手軽に使えるので個人的に気に入ってます。Bean Validationのインターフェースを実装し、独自の追加バリデータを作成するのも比較的簡単です。ということで今回はHibernate Validatorについて少し説明したいと思います。なお、サンプルプログラムで利用しているHibernate Validatorのバージョンは4.2です。 HibernateValidatorのバリデーションメッセージはデフォルトで英語なので、実開発時は日本語のメッセージを出力できたほうがいいと思います。メッセージはValidationMessages.propertiesにkey=value形式で定義し、クラスパスルートに当該ファイルを
その名のとおりJavaBeansの為のValidationの仕様であるJSR303ですが、近頃でもないですがHibernateはもちろん、その他SpringやOvalなどの周辺フレームワークの対応が進んでずいぶん使いやすくなってきました。 ところでアプリケーション作っててValidationの仕組みって毎回悩みませんか?私がJavaでWebアプリケーションつくりはじめた頃なんかだとStruts1.xが全盛期でvalidation.xml、validation-rule.xmlとか使って書いてましたが(今考えれば二度とやりたくないですねw)、今でも毎回どのチェックをどのレイヤ(アプリケーションレイヤ?ドメインレイヤ?)に持たせるかとか、データストアに問い合わせしないといけないValidationって画面の入力だけでチェックできるのとどう管理しようかなとか、色々と悩むこともしばしばです。最近D
この記事はJavaEE Advent Calendar 2013の12日目として書かれたものです。昨日は@yoshioteradaさんの「JSF + WebSocket で実装した IMAP Web メール・クライアント」でした。 11月に開催されたJJUGナイトセミナーの「おっぴろげJavaEE DevOps」のテストに関するセクションで「極力ユニットテストに寄せることで、JavaEEコンテナを使わずテストの実行速度を早くする」というお話をしました。 おっぴろげJavaEE DevOps from Taiichilow Nagase セッションではJPAのテストをJavaEEコンテナから切り離し、ユニットテストとして実行する方法をご紹介しましたが、時間の関係で省いたトピックをご紹介します。メソッドバリデーションのユニットテストです。 メソッドバリデーション メソッドバリデーションはBea
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く