在一个页面上,我添加了两个面板,请参见图"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)...
知道为什么会发生这种情况以及如何处理它?</ p>
谢谢
答案 0 :(得分: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/