听起来您的控制器在出错后正在向用户返回一个新视图并再次读取实体。也许您重定向到显示表单的 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;
}