是否possible/how在FeedbackPanel上多次显示一条消息
Is it possible/how to display a message on the FeedbackPanel more than one time
我的面板 A class 中有一个 org.apache.wicket.markup.html.panel.FeedbackPanel。反馈面板在 panelA 构造函数中实例化,其中显示一条消息 -> feedbackPanel.info("displayFirstTime")。我正在导航到一个新页面,然后使用命令
导航到上一个 panelA
target.getPage().get(BasePage.CONTENT_PANEL_ID).replaceWith(panelA);
但消息 "displayFirstTime" 将不会再次显示在反馈面板上。
我已经通过重写面板 onBeforeRender 方法做到了
@Override
public void onBeforeRender() {
super.onBeforeRender();
if (again_displayCondition) {
this.info("displayFirstTime");
}
}
但这不是一个干净的解决方案。
是否可以或如何实现,当第 2 次移动到 panelA 页面时,反馈消息也会显示?
Wicket 使用 application.getApplicationSettings().getFeedbackMessageCleanupFilter()
在请求周期结束时删除反馈消息。
默认情况下,它将删除所有 already rendered 条消息。
您可以 setup 自定义清理过滤器,它可能会留下一些消息,例如如果他们实现了一些接口。例如:
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()
以便它正确呈现。或者您也必须使用自定义 FeedbackPanel
。
DoNotDeleteMe
必须实施 java.io.Serializable
!
我的面板 A class 中有一个 org.apache.wicket.markup.html.panel.FeedbackPanel。反馈面板在 panelA 构造函数中实例化,其中显示一条消息 -> feedbackPanel.info("displayFirstTime")。我正在导航到一个新页面,然后使用命令
导航到上一个 panelAtarget.getPage().get(BasePage.CONTENT_PANEL_ID).replaceWith(panelA);
但消息 "displayFirstTime" 将不会再次显示在反馈面板上。
我已经通过重写面板 onBeforeRender 方法做到了
@Override
public void onBeforeRender() {
super.onBeforeRender();
if (again_displayCondition) {
this.info("displayFirstTime");
}
}
但这不是一个干净的解决方案。
是否可以或如何实现,当第 2 次移动到 panelA 页面时,反馈消息也会显示?
Wicket 使用 application.getApplicationSettings().getFeedbackMessageCleanupFilter()
在请求周期结束时删除反馈消息。
默认情况下,它将删除所有 already rendered 条消息。
您可以 setup 自定义清理过滤器,它可能会留下一些消息,例如如果他们实现了一些接口。例如:
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()
以便它正确呈现。或者您也必须使用自定义 FeedbackPanel
。
DoNotDeleteMe
必须实施 java.io.Serializable
!