java - (5.4-beta-6) 未调用区域事件处理程序

标签 java tapestry

据我了解,Zone 是一个组件,我可以处理它的事件。

所以我键入以下代码:

@InjectComponent
private Zone zoneSample;
@OnEvent(component = "zoneSample")
private void zoneEvent() {
    System.out.println(String.format("Zone client id: %s", zoneSample.getClientId()));
}

没有异常被抛出,所以 Zone ID 设置正确。但是事件没有被触发! 这个事件处理方法不应该匹配区域的所有事件吗?

我预计它基本上会在渲染区域之前、期间和之后触发,因为我需要查看是否可以获得生成的区域的客户端 ID,以便稍后在使用 AjaxResponseRenderer类。

最佳答案

区域不触发任何事件。在这种情况下,有一个方便的 mixin 可以帮助您,即 RenderNotification mixin。 .

它提供了两个事件:beginRender 和 afterRender,我想这就是你所需要的。将 mixin 应用到区域后,处理事件的代码将如下所示:

void onBeginRenderFromZoneSample(MarkupWriter writer)
{
    ...
}

void onAfterRenderFromZoneSample(MarkupWriter writer)
{
    ...
}

关于java - (5.4-beta-6) 未调用区域事件处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25213133/

相关文章:

java - 文件树内的复选框

java - 来回遍历数组

当我尝试向客户添加另一个产品时发生 java.lang.StackOverflowError

java - 在 Web 应用程序之外提供图像

java - 我如何在 Tapestry5 中创建自定义文本字段以将一些 Javascript 呈现到页面上?

javascript - 从表中的 <th> 中删除属性

java - 如何使用 Tapestry 组件绘制钻石 t :loop

java - 我如何在这里使用多态性来改进我的代码?

java - 用户输入时的地址验证

java - 在 Play Framework 中通过 GET 请求发送日期参数的理想方式是什么?