いつもお世話になっています。
毎度ながらスミマセン。質問です。
Playframework 2.3を使って開発していますが、色々試したところ
リレーションを使った時のValideteのアノテーションが効かないことがわかりました。
java
1@Entity 2public class User extends Model { 3 4 @OneToOne(cascade = CascadeType.ALL, mappedBy = "user") 5 @JsonManagedReference 6 public UserBase userBase; 7 8 @Required(message = "id情報を入力してください") 9 public Integer id; 10 11 @Required(message = "パスワード情報を入力してください") 12 public String password; 13} 14 15@Entity 16public class UserBase extends Model { 17 18 @OneToOne 19 @JoinColumn(name = "user") 20 @JsonBackReference 21 public User user; 22 23 // 年齢 24 @Required(message = "年齢を入力してください") 25 public Integer age; 26 27 // 住所 28 @Required(message = "住所を入力してください") 29 public String address; 30 31}
こんな感じのEntityClassを用意しました。
Userにid名とpasswordを保持して、UserBaseで登録ユーザーの情報を持つ。って関係です。
これをFormを使って、Controllerでerrorをチェックするとキャッチすることができますが、エラーメッセージを取得することが出来ません。
詳細を書くと、User.classのエラーメッセージは取得できますが、UserBase.classは取得できないどころか、アノテーションも効いていないようなのです。
java
1public class UserController extends Controller { 2 public static Result confirm() { 3 Form<User> form = Form.form(User.class).bindFromRequest(); 4 5 // User.classのエラーは取得できるが 6 // UserBase.classのエラーが取得できない 7 if (form.hasErrors()) { 8 9 // 省略 10}
viewはヘルパーを使っているので多分問題はないと思います。
scala
1@(formValue:Form[User]) 2@import helper._ 3 4@(inputText(field = formValue("id"), 'class -> "form-control", 'name -> "id", '_label -> "ID")) 5@(inputText(field = formValue("password"), 'class -> "form-control", 'name -> "password", '_label -> "パスワード")) 6@(inputText(field = formValue("userBase.address"), 'class -> "form-control", 'name -> "userBase.address", '_label -> "住所")) 7@(inputText(field = formValue("userBase.age"), 'class -> "form-control", 'name -> "userBase.age", '_label -> "年齢")) 8
ちなみに、UserBase.age、addressに@NotNullを付与するとform.hasErrors()ではエラーになります。メッセージは相変わらず取れません。
ご存知の方、いらっしゃいましたら、お手数をお掛け致しますが、ご教授頂けますと助かります。
よろしくお願いいたしますm(_ _ )m
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。