0

在一页上,我添加了两个面板,请参见图"select one or more""select one"。该图形"select one or more"是第一次panel加载页面时对用户可见的第一个图形。在用户做出一些选择后,他/她可以点击next按钮。这样做,另一个panel "select one"变得可见,而第一个面板变得不可见。单击back按钮,第一个面板可见,第二个面板消失。在第二个面板上进行选择并单击下一页"your selection"打开页面。

一切正常,直到我单击browser从第二页"your selection"到第一页的后退按钮。回到第一页,用户会看到面板"select one or more",但没有任何效果。当我点击我在调试中看到的复选框时:

BehaviorRequestTarget - component not enabled or visible; ignoring call. Component: [MarkupContainer [Component id = selection]]

当我点击下一个按钮

BehaviorRequestTarget - component not enabled or visible; ignoring call. Component: [MarkupContainer [Component id = next]]

这是 ajax 调试文本:

INFO: focus set on idb

INFO: Initiating Ajax POST request on ?wicket:interface=:2:allpopup:content:form:allItemsContainer:items:7:selectionContainer:selected::IBehaviorListener:0:&random=0.997746484662292

INFO: Invoking pre-call handler(s)...

INFO: Received ajax response (0 characters)

ERROR: Wicket.Ajax.Call.failure: Error while parsing response: Could not find root <ajax-response> element

INFO: Invoking post-call handler(s)...

INFO: Invoking failure handler(s)...

知道为什么会发生这种情况以及该怎么做吗?

谢谢

在此处输入图像描述在此处输入图像描述在此处输入图像描述

4

1 回答 1

1

我将以下内容添加到我的 BasePage.java 文件(它扩展了 WebPage)中,以在单击后退浏览器按钮时强制页面重新加载。

// Sets page reload on browser back button
@Override
protected void configureResponse() {
    super.configureResponse();
    WebResponse response = getWebRequestCycle().getWebResponse();
    response.setHeader("Cache-Control", "no-cache, max-age=0, must-revalidate, no-store");
    response.setHeader("Expires","-1");
    response.setHeader("Pragma","no-cache");
}

我相信我从以下链接得到了建议:http ://www.richardnichols.net/2010/03/apache-wicket-force-page-reload-to-fix-ajax-back/

于 2012-10-23T17:18:24.273 回答