我想在jspx文件中有一个隐藏字段。
我想要做的是自动将身份验证用户的名称保存在数据库中。我是这样做的:
使用以下命令修改我的bean:
public void Got.setUserkt(String userkt) {
final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName();
this.userkt = currentUser;
}
环顾四周,我发现我必须在create.jspx页面中使用render =“false”,但是当render设置为false时,我输入字段中的数据不会保存在我的数据库中。
我做错了什么?
答案 0 :(得分:2)
对于我的新秀,我会恢复我的所作所为。
第一步:从我的roo控制器(EntityController_Roo_Controller.aj)剪切我的方法
@RequestMapping(method = RequestMethod.POST)
public String create(@Valid Got got, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest) {
if (bindingResult.hasErrors()) {
uiModel.addAttribute("got", got);
addDateTimeFormatPatterns(uiModel);
return "gots/create";
}
uiModel.asMap().clear();
got.persist();
return "redirect:/gots/" + encodeUrlPathSegment(got.getId().toString(), httpServletRequest);
}
第二步:将方法粘贴到java控制器(EntityController.java)
第三步:编辑方法以获取用户名并使用它修改我的方法
更新我的实体: got.setUserkt(principal.getName());
@RequestMapping(method = RequestMethod.POST)
public String create(@Valid Got got, BindingResult bindingResult, Model uiModel, HttpServletRequest httpServletRequest, Principal principal) {
if (bindingResult.hasErrors()) {
uiModel.addAttribute("got", got);
addDateTimeFormatPatterns(uiModel);
return "gots/create";
}
uiModel.asMap().clear();
got.setUserkt(principal.getName());
got.persist();
return "redirect:/gots/" + encodeUrlPathSegment(got.getId().toString(), httpServletRequest);
}
再次感谢!
答案 1 :(得分:1)
为什么不创建一个拦截保存目标实体的方面,并在ITD的Spring Controller中添加相应的字段或覆盖相应的方法,将其复制到* .java控制器并在那里添加字段?
答案 2 :(得分:0)
disableFormBinding和type的组合应该可以工作,如下所示。
注意:不确定它是否设计如下:)