Что эквивалентно IVisitor.CONTINUE TRAVERSAL в калитке 1.5

Я переношу наше приложение Wicket 1.4 на Wicket 1.5. Посетители теперь очень разные. Я хотел бы знать, как мне обрабатывать CONTINUAL_TRAVERSAL в Wicket 1.5? Существующий код версии 1.4 приведен ниже:

 public class MyFormVisitor implements IVisitor<Component, Object>, Serializable {

    private static final long serialVersionUID = 7271477325583441433L;
    private Set<Component> visited = new HashSet<Component>();

    @Override
    public Object component(Component c) {
        if (!visited.contains(c)) {
            visited.add(c);

            c.add(new MandatoryBehavior());
            c.add(new ErrorHighlightBehavior());
        }
        return IVisitor.CONTINUE_TRAVERSAL;
   }

person sardo    schedule 08.06.2012    source источник


Ответы (1)


Просто преобразуйте свой метод во что-то вроде этого, и все будет в порядке:

@Override
public void component(final Component c, final IVisit<Void> visit) {
    if (!visited.contains(c)) {
        visited.add(c);

        c.add(new MandatoryBehavior());
        c.add(new ErrorHighlightBehavior());
    }
}

Как вы можете видеть в документации, на которую вы ссылаетесь, обход теперь контролируется через IVisit передается методу. Если ни один из методов ни остановить, ни не углубиться не вызывается, то обход просто продолжится.

person DerMiggel    schedule 08.06.2012
comment
Спасибо ДерМиггель. Я примерно так и думал, но не нашел подтверждения в документации. Вы сделали это для меня, еще раз спасибо. - person sardo; 10.06.2012