2012-06-08 54 views
3

我將我們的Wicket 1.4應用程序移植到Wicket 1.5。現在訪問者very different。我想知道的是如何處理Wicket 1.5中的CONTINUAL_TRAVERSAL?現有的1.4代碼如下:什麼是相當於在檢票1.5 IVisitor.CONTINUE TRAVERSAL 1.5

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; 
    } 

回答

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傳遞給該方法。如果沒有任何方法停止或不進一步調用,則遍歷將繼續。

+0

謝謝DerMiggel。這是我的想法,但我無法在文檔中找到任何驗證。你已經爲我完成了,再次感謝。 – sardo