[Play 2.2.2]バリデーションルールの動的付与につきまして

207 views
Skip to first unread message

宮崎葵

unread,
Apr 29, 2014, 9:18:26 AM4/29/14
to pla...@googlegroups.com
はじめまして、宮崎と申します。

次のプロジェクトで、Play Framework 2.2.2を利用して開発することになりまして、
現在、勉強をさせて頂いております。

ネットで検索させて頂きましたが、情報が見つけきれず、
ご教授頂こうと思いまして、投稿させて頂きました。

勉強として、データベースに対して、データの登録、更新の処理を作成しております。
登録/更新は、同じ画面を利用し、同じモデルを利用しております。

入力条件の値により、バリデーションさせる制約を変えたいと思っております。
また、変更した制約が実行されるタイミングを、モデルのアノテーション制約と
同じタイミングで、実行したいのですが、可能でしょうか?

Model内部に、validate()メソッドを作成して、
入力条件によって、バリデーションの内容を変えることはできたのですが、
タイミングが、Modelのプロパティに付与した@Required等のアノテーション制約が
全て正常な場合のみしか、validate()メソッドが実行されませんでした。
アノテーション制約を全てはずし、同様の処理を、validate()にて記載したところ、
実現できたのですが、もう少しスマートにできないかと思いました。

解決方法に心当たりがありましたら、ご教授いただけないでしょうか。
大変、お手数をお掛けしますが、よろしくお願い致します。


OS: Mac OS X 10.9.2
JDK: 1.7.0_51
Play Framework:  2.2.2 (Javaプロジェクトを作成)
DB: MySQL 5.5.34


宮崎葵

Xenon Abe

unread,
May 1, 2014, 5:46:57 PM5/1/14
to pla...@googlegroups.com
こんにちは。阿部といいます

登録と更新でRequiredを切り替える、ぐらいであれば
アノテーションにgroups値を設定すれば出来ます。
(JSR-303 groups あたりで調べるといろいろ出てきます)

それ以上に入力値によって細かくルールづけをしたいのであれば
独自のアノテーションを作成してメソッドにつければ
同じタイミングでのバリデーションが出来ると思います。

ただ個人的には、アノテーションでのバリデーションは最低限にして
細かい複合チェックなどはvalidate()で行うほうが見通しがよいと思っています。


2014年4月29日火曜日 22時18分26秒 UTC+9 宮崎葵:
Reply all
Reply to author
Forward
0 new messages