0

抱歉,我是春天的新手。但是我有一个问题,我的 jsp 上有两个表中的字段。创建乐观锁错误时。

我用相同的数据打开了两个浏览器。在屏幕一上,我将一条记录添加到表 B。然后我保存它。然后屏幕重新显示并显示正确保存的消息。在第二个浏览器上,我更改了表 A 中的一些字段,然后单击保存按钮。抛出乐观锁定错误后,屏幕重新显示。表 A 中的字段是我在浏览器 2 上更改的原始字段。但是表 B 中的字段包括在浏览器一中输入的新字段。

我们试图向用户展示他们点击保存时的值。所以此时不​​想看到写入表 B 的新记录。

提前致谢。

4

1 回答 1

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;
}
于 2012-07-11T12:27:43.037 回答