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)みたいにセットしていたから。
コピーするのはいいが、こういう風におかしなセットしないように注意。