我正在使用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将随机数附加到网址。但是使用onclick
代替href
并不是正确的做法。如果用户想要在新标签中打开链接怎么办?
我认为这是一个相当普遍的问题。有没有更好的解决方案?
答案 0 :(得分:3)
您的浏览器或代理必须缓存该页面。尝试将这些标题添加到缓存的页面响应中,不应该是:
response.setDateHeader("Expires", 0);
response.setHeader("Cache-control", "no-store, no-cache, must-revalidate");
response.setHeader("Pragma", "no-cache");
关于JSTL的使用,我会有两个评论:
c
,而不是core
。应该使用<c:url>
标记来组合URL。这个标签负责
/
开头)并预先挂起应用的上下文根(/agency.do
成为/myApp/agency.do
)例如:
<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>