2

我有几个下拉菜单和一个下载链接按钮。根据用户选择,我得到要下载的文件。如果用户没有做出选择,我会在反馈面板上显示错误。如果用户随后进行选择并单击下载链接,它可以正常工作,但之前的反馈消息仍然可见。我该如何清除它。

点击下载链接,我尝试了以下,但没有用

FeedbackMessages me = Session.get().getFeedbackMessages(); 
me.clear();
4

3 回答 3

4

大概是

Session.get().cleanupFeedbackMessages()

甚至在 Wicket 6.x 中已经更改

于 2013-06-14T21:38:19.027 回答
2

我找到了这篇文章,我认为是时候分享 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;
 }
}
于 2014-08-01T13:47:03.040 回答
0

以下代码在 Wicket 6 中适用于我:

public class MyComponent extends Panel {

    ...
    FeedbackMessages feedback = getFeedbackMessages();
    feedback.clear();
于 2018-08-02T07:34:17.003 回答