首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tapestry事件动态组件

Tapestry事件动态组件
EN

Stack Overflow用户
提问于 2019-01-14 23:23:20
回答 1查看 89关注 0票数 1

我想为一个动态生成的组件实现一个eventhandler。这意味着我有一个Table,它的源被绑定到一个定制的TableModel (它实现了一个接口JsonGenerator,可以用它来生成json数据)。在这个TableModel中,我添加了一些自定义组件,当它们的状态发生变化时,它们会触发一个事件(valueChanged)。这些组件具有ids (1到4)。但是,我不能简单地添加一个与此类似的方法:

代码语言:javascript
复制
void onValueChangedFrom1 ()

因为有时不存在id为1的组件。当我尝试一种方式时,我会得到以下异常:

代码语言:javascript
复制
Method de.[...].onValueChangedFrom1() references component id '1' which does not exist.

我不能修改自定义TableModelJsonGenerator或其他自定义组件。

知道定制组件的值可以通过tapestry的Request服务访问可能很有趣:

代码语言:javascript
复制
request.getParameter("1");

但是,当这个值改变时,我如何添加一个事件处理程序呢?这在Tapestry中是可能的吗?

EN

回答 1

Stack Overflow用户

发布于 2021-10-19 21:24:51

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

代码语言:javascript
复制
public void onValueChanged(@RequestParameter("newValue") Object newValue, int context) {
    ...
}

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54184323

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档