ZK:听取所有后代的事件

时间:2011-07-16 13:09:53

标签: events scala forwarding zk event-flow

我目前正在开发一个ZK应用程序,但找不到一种方法来监听从一个特定的下面的所有组件中触发的所有SelectEvent(这是唯一一个在开始时存在的组件,然后获取每个选择都在其中或后代发生的后代。

此组件下方的层次结构将随每SelectEvent而变化,我需要在每次发生这种情况时检查条件。

我唯一能想到的是

    1. 定义一个函数,它执行我需要的条件检查,另外
    2. 添加所有后代(没有一个)事件侦听器,它们调用此函数
  1. 在进行条件检查的页面上注册一个事件监听器。比必要时更频繁地开火,但总比没有好。
  2. 两者都感觉不对,如果有多个根组件,后者就不安全(因为每个组件都有自己的后代组件)

    我有什么方法可以忽略吗?

    PS:这是this question的ZK版本。


    一些代码。 ExpressionTypeSelector包含Listbox以选择ExpressionModel。在选择时,模型的小部件将替换ExpressionTypeSelector的小部件。

    主:

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

    TermModelExpressionModel的例子)

    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 s的树。每次选择后,应检查这是否是最后一次选择。

1 个答案:

答案 0 :(得分:0)

除了使用你的第二个选项之外,我没有看到任何其他容易的事情。为此可以使用页面级事件侦听器。 ZK文档中的参考文献是here