我想为一个动态生成的组件实现一个eventhandler。这意味着我有一个Table,它的源被绑定到一个定制的TableModel (它实现了一个接口JsonGenerator,可以用它来生成json数据)。在这个TableModel中,我添加了一些自定义组件,当它们的状态发生变化时,它们会触发一个事件(valueChanged)。这些组件具有ids (1到4)。但是,我不能简单地添加一个与此类似的方法:
void onValueChangedFrom1 ()因为有时不存在id为1的组件。当我尝试一种方式时,我会得到以下异常:
Method de.[...].onValueChangedFrom1() references component id '1' which does not exist.我不能修改自定义TableModel、JsonGenerator或其他自定义组件。
知道定制组件的值可以通过tapestry的Request服务访问可能很有趣:
request.getParameter("1");但是,当这个值改变时,我如何添加一个事件处理程序呢?这在Tapestry中是可能的吗?
发布于 2021-10-19 21:24:51
您可以在事件上添加1-4作为上下文,并在您的事件处理程序中捕获它。不过,您的事件处理程序需要是组件不可知的,这意味着您需要一个适用于所有组件的事件处理程序。
public void onValueChanged(@RequestParameter("newValue") Object newValue, int context) {
...
}然后在您的每个自定义组件上将上下文添加到事件,您没有显示您当前是如何生成事件的,因此我无法告诉您要更新什么。
https://stackoverflow.com/questions/54184323
复制相似问题