簡體   English   中英

兩次Struts動作 -

[英]Struts action called twice -

當我向瀏覽器提交表單時,表單會被提交兩次。訪問日志顯示同時出現兩個請求。執行它的兩個不同的線程。

問題是,第一個請求包含用戶輸入的屬性值,而第二個請求調用僅包含請求對象中的空值。

並非所有時間都會出現這個問題。它只是偶爾發生,根本不可重復。在IE8和IE9中,我遇到了這些問題。

有人知道為什么會這樣嗎?

也許問題是你在javascript onclick事件處理程序中使用了提交按鈕和document.forms[0].submit

因此,動作被調用兩次:

第一次來

document.forms[0].submit

第二次

submit button action

你使用struts1還是struts2? 無論如何,他們都有一個機制來避免重復提交: 令牌 對於struts1,您需要在第一個操作(表單頁面的操作中調用saveToken() ,並且struts的'html:form'標記會自動將此標記添加到您的頁面; 在您的提交操作(處理表單的操作)中,調用isTokenValid(request,true) ,這將驗證您的頁面和會話中的令牌。

對於struts2,為您的提交操作添加攔截器引用令牌,並在表單頁面中添加's:token'標記。

上述解決方案限制在服務器端重復提交,第二個請求將導致異常並作為無效請求處理。 但是如果你想在UI方面限制它,你需要一些javascript,例如:當你點擊提交按鈕時,禁用它以避免重復提交。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM