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 に答える