javascript - Tapestry:重新加载页面清空页面内容

标签 javascript java html mysql tapestry

我对 Tapestry(版本 5.3)的行为有疑问: 我有一个“Web 应用程序”(带有 tomcat6 的本地服务器,没有 http://),其中包含多个连接到 MySQL 数据库的页面。 <t:form><t:submit>将向数据库发送搜索查询,然后数据库将返回一个页面,其中包含搜索参数的内容通过 <t:outputraw> 打印到 .tml 页面。在重新加载页面或返回并再次搜索相同参数(例如字符串)时,页面不再显示任何非静态内容(字符串内容未静态写入 .tml)。我已经尝试过不同的重新加载方法,但它始终是相同的空白输出。

代码:

包含输出的页面打印如下:

<p style="line-spacing: 12px">
        <t:loop source="List" value="StringEntry">
            <t:if test="continuecondition">
                <t:outputraw value="FoundString" />
                <br />
            </t:if> 
        </t:loop>
    </p>

我也试着检查问题发生在哪个部分

<p>
      <b>${listSize} </b>  <br/>
      <b>${printedLineCount}</b> 
  </p>

listSize包含搜索后的查询结果,printedLineCount等于continueCondition为true的次数(页面打印行数)。

当问题发生时,Java 列表是它应该的那么大,而另一个值为零,因此不会在页面上显示任何输出。我现在的问题是,为什么它只打印一次内容(创建页面)而不是每次(重新)加载页面时打印内容?它与浏览器/服务器缓存有关吗?如果是,我可以做些什么来丢弃缓存并以这种方式重新加载它,它会再次显示吗?或者,如果没有,我是否可以做些什么来销毁 PageLink 并在已经存在的情况下重新创建它?

提前致谢, 亲切的问候

旁注:重新启动浏览器可解决问题。 (在第一次搜索时一切正常,但如果您重新加载页面或再次搜索相同的查询,错误是相同的)

最佳答案

Response 对象为您提供了一种设置(覆盖) header 的方法;这些 header 必须请求浏览器缓存页面。

典型的标题是

@Inject
private Response response;
...
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
response.setHeader("Cache-Control", "post-check=0, pre-check=0");
response.setHeader("Pragma", "no-cache");

header 可以从任何框架发送,这里是more information关于“无缓存” header 。

关于javascript - Tapestry:重新加载页面清空页面内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35157434/

相关文章:

Java 正则表达式令人困惑

java - Wicket - validator 报告警告而不是错误并且不阻止表单提交

javascript - 将 iframe 附加到 div 而不刷新

javascript - 如何从jquery中的父元素中删除html标签

javascript - 是否可以更改多个图像及其各自的鼠标悬停命令?

java - 接口(interface)编程

html - SVG 动画最后没有正确关闭(小间隙仍然存在)

javascript - Firestore 分页 - 以前

javascript - 如何多次更换?

javascript - 如何将第一列位置固定在表格上?