Wicket:BehaviorRequestTarget - 组件未启用或可见;无视通话

时间:2012-10-23 13:32:23

标签: ajax wicket

在一个页面上,我添加了两个面板,请参见图"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>

谢谢

enter image description here enter image description here enter image description here

1 个答案:

答案 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/