我在使用 JSP 时遇到缓存问题。我的应用程序由struts 和jsp 组成。 实际上,在我的应用程序中,struts 操作类和 JSP 页面用于添加和编辑数据。
发生的操作顺序如下:
- 用户登录应用程序
- 用户访问包含要填写的表单的 JSP 页面(PreNeed.jsp)。
- 用户填写详细信息并点击“保存”按钮。
现在假设用户已选中“预先需要服务”单选按钮并提交表单,如下图所示。
但是下次当用户尝试填写表单并单击“保存”按钮时,即使用户没有触及该部分,它也会自动尝试另存为“预先需要服务”。
我觉得页面正在缓存值。
我尝试将以下 scriplet 放入 JSP 页面中:
<%
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
%>
但是没有成功。这段代码有具体的放置位置吗?
编辑: 这是我的 JSP 代码
<td id="_preneedStatus">
<logic:notEqual name="preNeed" property="posted" value="1">
<html:radio value="Active" name="preNeed" property="preneedStatus"/>
<font face="Arial" size="2">Pre-Need Active</font><br>
</logic:notEqual>
<html:radio value="Serviced" name="preNeed" property="preneedStatus"/>
<font face="Arial" size="2">Pre-Need Serviced</font><br>
<logic:equal name="accoutDescDisplay" scope="session" value="display">
<font face="Arial" size="2"> Service Date: </font>
<html:text size="10" name="preNeed" property="serviceDate" onblur="setDispositionDate();" onfocus="focusDateEdit(this);" />
<fdms:FDMSDate fieldID="serviceDate1" javascriptFormField="document.forms[0].serviceDate"></fdms:FDMSDate>
<br/>
</logic:equal>
<logic:notEqual name="preNeed" property="posted" value="1">
<html:radio value="Cancelled" name="preNeed" property="preneedStatus"/>
<font face="Arial" size="2">Pre-Need Cancelled</font>
</logic:notEqual>
</td>
用于测试的浏览器: Firefox、Chrome
框架:Struts 1.2
服务器:Wildfly 9.0.1.Final(JBoss)
最佳答案
我不确定到目前为止您实际尝试过什么,也不确定您正在使用什么浏览器,但是您是否在 JSP 文件中尝试过以下这些行:
<%
response.setHeader("Cache-Control","no-cache");
response.setHeader("Pragma","no-cache");
response.setDateHeader ("Expires", -1);
%>
这似乎是缓存问题的常见答案。但是,这很可能也会消除所有缓存,因此它可能不完全是您想要的。
来源:
关于java - 防止 JSP 缓存值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34153367/