浏览器显示过时的JSP页面,用户必须手动刷新
Browser shows stale JSP page, user has to refresh manually
我正在用JSP做一个网站。有一个名为Agency的页面是公开可见的,并显示了一个机构的详细信息。但是,当"代理管理员"登录时,将呈现相同的代理页面,并添加/编辑链接以修改页面上的数据。
问题是:
-
用户访问代理页面(此时未登录)
-
该用户以代理管理员身份登录,并再次导航到代理页面
-
代理页面不显示添加/编辑链接,直到用户手动刷新浏览器
到代理页面的链接是这样的:
<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>
我使用javascript将随机数附加到URL。但是用onclick
代替href
感觉不像是正确的做法。如果用户想在新选项卡中打开链接该怎么办?
我认为这将是一个相当普遍的问题。有更好的解决办法吗?
您的浏览器或代理必须缓存该页面。尝试将这些标头添加到缓存页面的响应中,而不应该是:
response.setDateHeader("Expires", 0);
response.setHeader("Cache-control", "no-store, no-cache, must-revalidate");
response.setHeader("Pragma", "no-cache");
关于JSTL的使用,我有两点要说:
- 核心库的前缀通常是
c
,而不是core
。 URL应该使用
<c:url>
标签组成。这个标签负责- 获取绝对url(从
/
开始)并预先挂起应用程序的上下文根(/agency.do
变成/myApp/agency.do
) - 如果需要重写URL,将会话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>
相关文章:
- 如何在用户返回和上一个按钮时刷新下拉列表
- 防止用户多次刷新页面
- 用户使用浏览器时SPA中的问题's的后退或刷新功能
- 禁止用户刷新页面
- 当至少有一个用户触发事件而不刷新页面时,更改所有用户页面中的内容
- 允许用户在不刷新页面的情况下留下多条评论
- 如何在用户更新AngularJs中的控制器时刷新$state
- 当用户单击关闭浏览器时(但不是当用户单击刷新按钮时),JavaScript会确认启动
- 当用户刷新页面时,如何在单独的服务器中处理socket.io上的会话
- 重新启动/刷新时在Google Maps API上保存标记,之后's已被用户拖动.下面的
- 在用户提交表单后显示数据(从API调用检索),而不刷新页面
- 在JS web应用程序中,如何确保具有访问令牌的恶意用户无法刷新它
- 如何限制用户导航回以前的页面并刷新
- 检查用户是否刷新,返回,关闭浏览器等 socket.io
- 余烬.当用户刷新网站时,保留下拉菜单中的选择
- 当用户从下拉列表中选择时刷新 CKEDITOR
- 根据用户选择的计时器间隔自动刷新页面
- 在用户不刷新时更新 Web 应用程序
- 刷新所有联机用户的页面
- 基于Javascript的应用程序中的安全性-刷新用户哈希