抱歉,我是春天的新手。但我有一个问题,我的jsp上有两个表的字段。当创建乐观锁定错误时。
我有两个浏览器打开相同的数据。在屏幕上我向表B添加了一条记录。然后保存它。然后屏幕重新显示保存正确的消息。 在第二个浏览器上,我更改了表A中的一些字段,然后单击“保存”按钮。抛出乐观锁定错误后,屏幕会重新显示。表A中的字段是我在浏览器2中更改的原始字段。但表B中的字段包括在浏览器1中输入的新字段。
我们正试图向用户显示他们点击保存时的值。因此,此时不希望看到写入表B的新记录。
提前致谢。
答案 0 :(得分:0)
在听到错误之后,听起来像是您的控制器正在向用户返回一个新视图并再次读取该实体。也许您重定向到显示表单的GET?
如果你有一个控制器方法捕获任何错误(验证或其他),而不是返回一个模型和视图(新模型替换原始值,你可以只返回一个视图(POST来自同一个视图) )它应该显示用户编辑的值。
像这样......
@RequestMapping(value = "/form", method = RequestMethod.GET)
public ModelAndView getForm() {
// Get the model data...
MyModel model = ...
return new ModelAndView(VIEW_NAME, MODEL_NAME, model);
}
@RequestMapping(value = "/form", method = RequestMethod.POST)
public ModelAndView handlePost(@ModelAttribute(MODEL_NAME) MyModel model,
BindingResult errors) {
ModelAndView mav = null;
// Process/validate...
if (has errors) {
// possibly add something to errors
mav = new ModelAndView(VIEW_NAME);
else {
// new view instead...
}
return mav;
}