2011-11-30 47 views
0

因爲我試圖解決這個問題一些日子,我想給你們一個機會。情況:如何在我的整個struts項目中重新啓用對1個站點的自動完成支持?

我們在後臺運行帶有Java Server Pages和Struts的SAP Shop。我們與禁用HTML頭可置緩存:

現在我想似乎能爲我們做一個簡單的任務,但結果比我們預期的更科學
response.setHeader("Pragma", "no-cache"); 
response.setHeader("Cache-Control", "no-cache"); 
response.setHeader("Expires", "0"); 

我們希望只爲登錄頁面啓用IE的自動完成功能。我和我的同事嘗試的是簡單的方法,比如將標題值重置爲各種「應該緩存」的值,比如「public」,明天或者過期。 IE6及以後的版本都沒有給我們提供自動完成框。

那麼有沒有人知道在Struts系統中只有一個頁面的方法可以將緩存&變成我們認爲自動填充的結果?

+0

*「我想給你們一個機會」*謝謝大師。你的願望就是我的命令。 –

回答

0

好了現在我發現自己的答案。談論它似乎更容易,是嗎?

所以問題是,我們使用JavaScript函數來提交我們的登錄表單網站。但這不是你應該這樣做的(比如微軟)。幾分鐘前,我聽到一位techcast關於依靠可疑按鈕實現瀏覽器功能的Internet Explorer。

聽說我的腦子裏回答很清楚。我會通過一個按鈕提交。由於我們(必須!)使用Javascript提交,導致按鈕只是一個樣式的div,我不得不打電話按鈕點擊顯示IE我們做'官方'回發。

這是代碼:

function submitLoginForm() 
{ 
    var hiddenSubmitBtn = document.getElementById("hiddenSubmitButton"); 
    if(hiddenSubmitBtn.click) { 
     hiddenSubmitBtn.click(); 
    } else { 
     document.loginform.submit(); 
    } 
    return false; 
} 

現在工作得很好。

0

我不認爲自動完成與緩存響應頭有什麼關係。默認情況下自動完成功能處於啓用狀態,並且可以使用autocomplete="off"在特定表單字段上禁用自動完成功能。如果您的登錄表單字段中有這樣的屬性,那麼只需刪除它。

How do you disable browser Autocomplete on web form field/input tag?

+0

這不是問題,但謝謝你的建議! – wegginho

+0

我不得不承認JB Nizet,自動完成HAS INDEED用於緩存和響應頭文件。自動完成=「關閉」是抑制IE功能的最簡單方法。 – wegginho

相關問題