聽起來就像你的控制器在出錯後向用戶返回一個新的View並再次讀取實體。也許你重定向到一個顯示錶單的GET?
如果你有一個捕獲任何錯誤(驗證或其他)的控制器方法,而不是返回一個模型和視圖(新模型替換原始值,你可以返回一個視圖從)和由用戶編輯的它應該顯示的值。
像這樣...
@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;
}
是,所述控制器被再次讀取數據,它讀取它們結合形成電流狀態值超過然後再添加新的項目,我不得不重新從請求參數重建對象,我只是希望有更好的方法這要做。 – Clive 2012-07-12 12:37:55
有一個更好的方法,我會更新我的答案更多信息... – MattR 2012-07-12 12:48:09