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

时间:2016-02-02 15:28:06

标签: javascript java html mysql tapestry

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

代码:

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

<t:outputraw>

我还试图检查问题发生的部分

<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>

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

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

提前致谢, 亲切的问候

附注:重新启动浏览器可以解决问题。 (在第一次搜索时一切都很好,但如果你重新加载页面或再次搜索同一个查询,错误是一样的)

1 个答案:

答案 0 :(得分:0)

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

典型的标题是

@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");

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