有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Tapestry事件动态组件

我想为动态生成的组件实现一个eventhandler。这意味着我有一个Table,它的源代码绑定到一个定制的TableModel(它实现了一个接口JsonGenerator,可以用它生成json数据)。在这个TableModel中,我添加了几个自定义组件,当它们的状态改变时,它们会触发一个事件(valueChanged)。这些组件具有ID(1到4)。然而,我不能只添加一个类似的方法:

void onValueChangedFrom1 ()

因为有时不存在id为1的组件。在尝试anway时,我会遇到以下异常:

Method de.[...].onValueChangedFrom1() references component id '1' which does not exist.

我无法修改自定义TableModelJsonGenerator或其他自定义组件

了解自定义组件的值可以通过tapestry的Request服务访问可能会很有趣,比如:

request.getParameter("1");

但是,当这个值发生变化时,如何添加事件处理程序呢?这在Tapestry中可能吗


共 (1) 个答案

  1. # 1 楼答案

    您可以在事件上添加1-4作为上下文,并在事件处理程序中捕获它。不过,您的事件处理程序需要是组件无关的,这意味着您需要一个适用于所有组件的事件处理程序,即

    public void onValueChanged(@RequestParameter("newValue") Object newValue, int context) {
        ...
    }
    

    然后在每个自定义组件上向事件添加上下文,您没有显示当前如何生成事件,因此我无法告诉您要更新什么