3

我正在将我们的 Wicket 1.4 应用程序移植到 Wicket 1.5。现在的游客很不一样。我想知道的是如何在 Wicket 1.5 中处理 CONTINUAL_TRAVERSAL?现有的 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;
   }
4

1 回答 1

7

只需将您的方法转换为这样的方法,就可以了:

@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来控制遍历。如果没有调用停止或不深入的方法,则遍历将继续。

于 2012-06-08T20:13:07.060 回答