收集于網(wǎng)絡(luò)
首先,需要將繼承了SimpleFormController之類的sessionForm設(shè)為true。這樣,在顯示一個(gè)新表單時(shí),Spring會(huì)將command存放在session中,而在提交表單時(shí),Spring會(huì)從session中取出此command,隨后立即從session中刪除存放command的attribute。如果發(fā)現(xiàn)在session中沒有command,Spring將其斷定為重復(fù)提交,轉(zhuǎn)而執(zhí)行handleInvalidSubmit(request, response),可覆蓋此方法負(fù)責(zé)防止重復(fù)提交的任務(wù)。可以這么說,當(dāng)setSessionForm(true)之后,如果沒有先后經(jīng)歷顯示表單、提交表單的過程,就會(huì)被認(rèn)為是重復(fù)提交表單。而有一些情況下卻必須重復(fù)提交表單,如,修改數(shù)據(jù)庫的數(shù)據(jù)后,試圖寫入數(shù)據(jù)庫時(shí)因某些異常失敗,如果此時(shí)異常被當(dāng)前頁面捕獲并依舊返回當(dāng)前頁面,由于command已經(jīng)被Spring在后臺(tái)從session中移走,因此,就被認(rèn)為是無效重復(fù)提交,從而導(dǎo)致第二次經(jīng)修改后的記錄無法正確提交到數(shù)據(jù)庫中。handleInvalidSubmit()必須考慮到這種情況。
posted on 2007-05-08 15:44
流浪汗 閱讀(2048)
評(píng)論(0) 編輯 收藏 所屬分類:
Spring