7's workspace

業務外にSpringBootを使ってWebアプリを完成させるまでの記録

DTOに格納した値がDBに登録されない

画面遷移がある会員登録機能で、

各画面で入力項目をDTOにつめて、セッションに保存しようとしていた。

 

最後にサービスからDAOを呼び出すのだが

DBに保存されない。

 

@Controller

public class AccountController extends BaseController {

 

@Autowired

SessionDto sessionDto;

 

・・・

 

/**

* 新規登録画面(詳細)で入力した値がModelにセットされる 新規登録画面(確認)へ遷移する

*/

@RequestMapping(value = UrlConstant.Controller.General.CREATE_CONFIRM, method = { RequestMethod.POST })

public String createConfirm(@Validated DetailForm detailForm, BindingResult result, Model model) {

model.addAttribute("msg", "以下の内容でよろしいですか?");

if (result.hasErrors()) {

return UrlConstant.Page.General.CREATE_DETAIL;

}

BeanUtils.copyProperties(detailForm, sessionDto);

return UrlConstant.Page.General.CREATE_CONFIRM;

}

 

/**

* 前画面までに入力された値をDBに登録する 登録処理後、会員画面へ遷移

*/

@RequestMapping(value = UrlConstant.Controller.Member.ROOT, method = { RequestMethod.POST })

public String create_and_displayindex(Model model) {

model.addAttribute("msg", "登録完了です!");

daoService.registerUser(sessionRegisterDto);

return UrlConstant.Page.Member.INDEX;

}

 

結局の原因は、create_and_displayindexの引数部分に(@Validated SessionDto dto,BindingResult result, Model model)みたいにセットしていたから。

 

コピーするのはいいが、こういう風におかしなセットしないように注意。