2011-10-11 97 views
0

我正在JSP網站上工作。有一個名爲Agency的頁面,可公開顯示並顯示某個代理機構的詳細信息。但是,當「代理管理員」登錄後,將使用「添加/編輯」鏈接呈現同一代理商頁面,以修改頁面上的數據。瀏覽器顯示陳舊的JSP頁面,用戶必須手動刷新

問題是這樣的:

  • 用戶訪問代理商頁面(在這一點上尚未登錄)

  • 該用戶登錄作爲一個機構管理,並再次導航到該機構網頁

  • 代理商頁面不顯示添加/編輯鏈接,直到用戶手動刷新瀏覽器

這就是鏈接處網頁的樣子:

<a href="agency.do?agencyId=<core:out value="${agency.agencyId}" />"> 
    <core:out value="${agency.name}" /> 
</a> 

我一直在使用這個作爲一種解決方法:

<a href="javascript:void(0)" onclick="javascript:window.location = 'home.do?agencyId=<core:out value="${agency.agencyId}" />&rnd=' + Math.random()"> 
    <core:out value="${agency.name}" /> 
</a> 

我使用附加的隨機數的URL JavaScript的。但使用onclick而不是href並不覺得正確的做法。如果用戶想要在新標籤中打開鏈接會怎麼樣?

我認爲這將是一個相當普遍的問題。任何更好的解決方案?

+0

而JSTL傷害了我的眼睛。提高可讀性的建議也受到歡迎。 – Akshay

+0

這是不是* *小腳本更具可讀性。我只建議將'core'前綴設置回'c'。 – BalusC

回答

3

您的瀏覽器或代理必須緩存頁面。嘗試添加這些頭到緩存頁面的響應,不應該:

response.setDateHeader("Expires", 0); 
response.setHeader("Cache-control", "no-store, no-cache, must-revalidate"); 
response.setHeader("Pragma", "no-cache"); 

關於JSTL的使用,我將有兩個備註:

  1. 常用的前綴核心庫是c,而不是core
  2. URL應該使用<c:url>標記組成。此標記需要照顧

    • 服用絕對URL(開始用/)和預掛起該應用程序的上下文根(/agency.do變得/myApp/agency.do
    • 加入會話ID到URL如果URL重寫是必要
    • 編碼URL參數正確

例如:

<c:url var="agencyUrl" value="agency.do"> 
    <c:param name="agencyId" value="${agency.agencyId}" /> 
</c:url> 
<a href="${fn:escapeXml(agencyUrl)}"><c:out value="${agency.name}" /></a> 
相關問題