我有几个下拉菜单和一个下载链接按钮。根据用户选择,我获得要下载的文件。如果用户没有做出选择,我会在反馈面板上显示一个错误。如果用户选择并单击下载链接,则可以正常工作,但之前的反馈消息仍然可见。我如何清除它。
单击下载链接,我尝试了以下方法,但没有用
FeedbackMessages me = Session.get().getFeedbackMessages();
me.clear();发布于 2013-06-15 05:38:19
很可能是这样
Session.get().cleanupFeedbackMessages()甚至在Wicket 6.x中也进行了更改
发布于 2014-08-01 21:47:03
我找到了这篇文章,我认为是时候分享Wicket 6.x和Wicket 7.x的方式了,因为Session.get().cleanupFeedbackMessages()已经被弃用了。
要在Wicket 6.x上执行此操作,您必须为反馈面板实现额外的过滤器。在哪里做,这是你的决定。
通过扩展现有的FeedBackPanel类来创建新的FeedbackPanel实现
private class MessagesFeedbackPanel extends FeedbackPanel{
private MessageFilter filter = new MessageFilter();
public MessagesFeedbackPanel(String id){
super(id);
setFilter(filter);
}
@Override
protected void onBeforeRender(){
super.onBeforeRender();
// clear old messages
filter.clearMessages();
}
}通过实现现有的IFeedbackMessageFilter接口,提供一个新的过滤器实现
public class MessageFilter implements IFeedbackMessageFilter{
List<FeedbackMessage> messages = new ArrayList<FeedbackMessage>();
public void clearMessages(){
messages.clear();
}
@Override
public boolean accept(FeedbackMessage currentMessage){
for(FeedbackMessage message: messages){
if(message.getMessage().toString().equals(currentMessage.getMessage().toString()))
return false;
}
messages.add(currentMessage);
return true;
}
}发布于 2018-08-02 15:34:17
以下代码适用于我在Wicket 6中的工作:
public class MyComponent extends Panel {
...
FeedbackMessages feedback = getFeedbackMessages();
feedback.clear();https://stackoverflow.com/questions/17112583
复制相似问题