Wicket 是否可以/如何在反馈面板上多次显示消息

Wicket 是否可以/如何在反馈面板上多次显示消息,wicket,wicket-7,Wicket,Wicket 7,我的panelA类中有一个org.apache.wicket.markup.html.panel.FeedbackPanel。反馈面板在panelA构造函数中实例化,其中有一条消息要显示->feedbackPanel.info(“displayFirstTime”)。我正在导航到一个新页面,然后使用命令导航到上一个panelA target.getPage().get(BasePage.CONTENT_PANEL_ID).replaceWith(panelA); 但是“displayFirst

我的panelA类中有一个org.apache.wicket.markup.html.panel.FeedbackPanel。反馈面板在panelA构造函数中实例化,其中有一条消息要显示->feedbackPanel.info(“displayFirstTime”)。我正在导航到一个新页面,然后使用命令导航到上一个panelA

target.getPage().get(BasePage.CONTENT_PANEL_ID).replaceWith(panelA);
但是“displayFirstTime”消息不会再次显示在反馈面板上

我通过重写panel onBeforeRender方法实现了这一点

@Override
public void onBeforeRender() {      
    super.onBeforeRender();
    if (again_displayCondition) {
       this.info("displayFirstTime");
    }
}
但这不是一个干净的解决方案


当第二次移动到面板a页面时,是否可能或如何使反馈消息也显示?

Wicket使用
application.getApplicationSettings().getFeedbackMessageCleanupFilter()
在请求周期结束时删除反馈消息

默认情况下,它将删除所有消息

您可以创建一个自定义清理过滤器,该过滤器可能会留下一些消息,例如,如果它们实现了某些接口。例如:

component.info(new DoNotDeleteMe("The actual message here."));
您的过滤器必须检查:

@Override
public boolean accept(FeedbackMessage message)
{
    if (message.getMessage() instanceOf DoNotDeleteMe) {
      return false;
    }

    return message.isRendered();
}
确保实现
DoNotDeleteMe#toString()
,以便正确渲染。或者您也必须使用自定义的
反馈面板


DoNotDeleteMe
必须实现
java.io.Serializable

Wicket使用
application.getApplicationSettings().getFeedbackMessageCleanupFilter()
在请求周期结束时删除反馈消息

默认情况下,它将删除所有消息

您可以创建一个自定义清理过滤器,该过滤器可能会留下一些消息,例如,如果它们实现了某些接口。例如:

component.info(new DoNotDeleteMe("The actual message here."));
您的过滤器必须检查:

@Override
public boolean accept(FeedbackMessage message)
{
    if (message.getMessage() instanceOf DoNotDeleteMe) {
      return false;
    }

    return message.isRendered();
}
确保实现
DoNotDeleteMe#toString()
,以便正确渲染。或者您也必须使用自定义的
反馈面板

DoNotDeleteMe
必须实现
java.io.Serializable