2012-07-11 81 views
0

對不起,但我是新來的春天。但是我有一個問題,在我的jsp上有兩個表的字段。當樂觀鎖定錯誤被創建時。顯示新數據不是舊的彈簧約束

我有兩個瀏覽器打開相同的數據。在屏幕上,我向表B添加一條記錄。然後保存。然後使用保存的正確信息重新顯示屏幕。 在第二個瀏覽器中,我修改了表A中的一些字段,然後單擊保存按鈕。樂觀鎖定錯誤被拋出後,屏幕重新顯示。表A中的字段是我在瀏覽器2中更改的原始字段。但是表B中的字段包括在瀏覽器中輸入的新字段。

我們試圖向用戶展示他們單擊保存時的值。所以在這一點上不想看到寫入表B的新記錄。

在此先感謝。

回答

0

聽起來就像你的控制器在出錯後向用戶返回一個新的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; 
} 
+0

是,所述控制器被再次讀取數據,它讀取它們結合形成電流狀態值超過然後再添加新的項目,我不得不重新從請求參數重建對象,我只是希望有更好的方法這要做。 – Clive 2012-07-12 12:37:55

+0

有一個更好的方法,我會更新我的答案更多信息... – MattR 2012-07-12 12:48:09