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