wicketwicket-1.5wicket-6wicket-1.6wicket-7

How to use protected IFeedbackMessageFilter[] getFilters() in wicket 6.x or 7.x


I am trying to convert below code from wicket-1.4.9 to wicket-6.x/7.x, but not getting solution. Please help in this as I am new to Apache Wicket

@Override
protected IFeedbackMessageFilter[] getFilters() {
    final List<IFeedbackMessageFilter> filters = new ArrayList<IFeedbackMessageFilter>();
    getPage().visitChildren(FeedbackPanel.class, new IVisitor<FeedbackPanel>() {

        @Override
        public Object component(FeedbackPanel component) {
            if (pageFeedback.equals(component)) {
                return CONTINUE_TRAVERSAL_BUT_DONT_GO_DEEPER;
            }
            filters.add(component.getFilter());
            return CONTINUE_TRAVERSAL;
        }
    });

    return filters.toArray(new IFeedbackMessageFilter[filters.size()]);
} 

Solution

  • It should be something like:

    @Override
    protected IFeedbackMessageFilter[] getFilters() {
        final List<IFeedbackMessageFilter> filters = new ArrayList<IFeedbackMessageFilter>();
    
        getPage().visitChildren(FeedbackPanel.class, new IVisitor<FeedbackPanel, Void>() {
    
            @Override
            public void component(FeedbackPanel component, IVisit<Void> visit) {
                if (pageFeedback.equals(component)) {
                    visit.dontGoDeeper();
                    return;
                }
                filters.add(component.getFilter());
            }
        });
    
        return filters.toArray(new IFeedbackMessageFilter[filters.size()]);
    

    }