2010-06-03 75 views
0

如果這是錯誤的方法,請提供一些更好的建議,但我目前的努力一直在試圖找到一些存在的單頁加載,這樣我可以緩存哪些javascript/css文件已包含在內,以便只包含它們一次。我在TagSupport類子以爲我可以用如何在Struts 1.x中包含javascript/css一次

(HttpServletRequest)pageContext.getRequest().getParameterMap().put(srcKey,true) 

但要求是每個JSP,不是每個頁面加載所以這是一個失敗。我可以在web.xml中設置一個過濾器,但似乎我必須搜索響應中的重複項並重寫響應......痛苦。我可以嘗試存儲會話中的東西,但有清除值的頭痛...任何幫助,將不勝感激。

回答

0

請求對象不是「per jsp」;這是請求對象。你可以使用你想要的「屬性」地圖

pageContext.getRequest().setAttribute(srcKey, Boolean.TRUE); 

編輯 —如果您正在構建與多個 HTTP請求瀏覽器頁面,那麼你就必須保持跟蹤在客戶端的頁面上有什麼腳本,以便每個連續的HTTP請求都可以包含某種隱藏參數來傳遞信息。或者,你可以使用會話,但正如你所說,這將是一個混亂的維護。

也許你可以更多地解釋你的頁面是如何構建的。

+0

我太新,對此與你爭辯。我只是想告訴你我看到了什麼,希望你能告訴我我失蹤的事情。如果我輸入doStartTag,例如,它會報告所請求的jsp的名稱,例如,log pageContext.getRequest()。getRequestURI() 。如果我設置了屬性,或者通過getParameterMap()放置,當req.getRequestURI開始報告新的jsp時,屬性和參數似乎是新的集合。因此,如果我有兩個不同的jsps試圖包含prototype.js,那麼我會在頁面上看到它兩次。思考? – Felix 2010-06-03 16:43:00

+0

@Felix我已經更新了我的答案 - 我不明白你的頁面是如何工作的 – Pointy 2010-06-03 16:53:52

+0

隨後的請求是由 <% - 包含腳本。 js% - > <% - 也包括script.js% - > 根據像Chrome的Web Inspector和FF的firebug這樣的工具,只有一個實際的HTTP請求頁面,即actionName.do。 如果沒有足夠的信息,我表示歉意,在重新提出問題之前,我必須多說幾句。感謝您的時間。 – Felix 2010-06-03 17:12:08