###前提・実現したいこと
SpringMVCのcontlollerでの実装部分
入力情報をもったformが送られ、空情報のものをnullに初期化し、
その中でもNotNull制約のあるものは初期値を自分で設定したいと思っています。
java
1@InitBinder("form") 2 public void initBinder(WebDataBinder binder){ 3 binder.registerCustomEditor(String.class, new StringTrimmerEditor(true)); 4 } 5 6@ModelAttribute("form") 7 public TestForm initForm(){ 8 TestForm form = new TestForm(); 9 form.setContentTitle("0"); 10 return form; 11 } 12 13@RequestMapping(value = "/save", method = RequestMethod.POST) 14 public String save(@ModelAttribute("form") TestForm form, Model model) { 15 //formを用いての処理 16 } 17}
###試したこと
@InitBinderで未入力の情報をnullに初期化しています。
NotNull制約のあるcontentTitleを、@ModelAttributeを用いて"0"に初期値を設定しようとしていますが、nullの状態でsaveメソッドに入ってきています。
java
1@InitBinder("form") 2 public void initBinder(WebDataBinder binder){ 3 binder.setAllowedFields("contentId"); 4 } 5 6@ModelAttribute("form") 7 public TestForm initForm(){ 8 TestForm form = new TestForm(); 9 form.setContentTitle("0"); 10 return form; 11 } 12 13@RequestMapping(value = "/save", method = RequestMethod.POST) 14 public String save(@ModelAttribute("form") TestForm form, Model model) { 15 //formを用いての処理 16 } 17}
上記の実装ですと、contentIdは入力情報を受け取り、contentTitleは設定した"0"を受け取り
saveメソッドに入ってきています。
###補足情報
@InitBinderと@ModelAttributeを用いることで、空情報の初期化and初期値の設定が実現可能ではないかと思っているのですが、難しいでしょうか?悪戦苦闘しています。
実現不可能であれば、代替案をぜひ教えていただけないでしょうか?
(saveメソッド内での空文字チェックでの初期値の設定は避けたいです。)
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。