2

私は現在 ZK アプリケーションを開発していますが、SelectEvent特定の 1 つ以下のすべてのコンポーネントから起動されたすべての s をリッスンする方法を見つけることができませんでした (これは最初に存在する唯一のものであり、その中で行われるすべての選択で子孫を取得します)または子孫)。

このコンポーネントの下の階層は ごとSelectEventに変化するので、その都度状況を確認する必要があります。

私が考えることができる唯一のものは

    1. 必要な条件チェックを行う関数を定義し、さらに
    2. この関数を呼び出すすべての子孫 (存在しない) イベントリスナーに追加します
  1. 条件チェックを行うページにイベントリスナーを登録します。必要以上に頻繁に発火しますが、まったく発火しないよりはましです。

どちらも適切ではなく、複数のルート コンポーネントが存在する場合、後者は安全ではありません (これらのそれぞれに独自の子孫のセットがあるため)。

私が見落としている方法はありますか?

PS: これは、この質問の ZK バージョンです。


いくつかのコード。ExpressionTypeSelectorには、Listboxを選択するためのが含まれていますExpressionModel。選択すると、モデルのウィジェットが のウィジェットに置き換わりExpressionTypeSelectorます。

主要:

expressionSelector = new ExpressionTypeSelector()
expressionSelector.widget.setParent(layout)

TermModel( の例ExpressionModel)

class TermModel extends ExpressionModel[BooleanTerm] {
    val b1 = new ExpressionTypeSelector
    val op = new OperatorSelector
    val b2 = new ExpressionTypeSelector

    var widget = new Hlayout
    for (w ← List(
        new Label("("),
        b1.widget,
        op.widget,
        b2.widget,
        new Label(")")
    )) w.setParent(widget)
}

表示されます: ユーザーは のツリーを作成できますTermModel。選択が行われるたびに、これが最後の可能な選択であったかどうかを確認する必要があります。

4

1 に答える 1

0

2番目のオプションを使用する以外に簡単に実行できる方法はありません。そのために、ページレベルのイベントリスナーを使用できます。それに関するZKドキュメントからの参照はここにあります

于 2011-07-17T13:49:17.000 に答える