Wicket - 每次组件 ajax 刷新时执行 javascript

Wicket - execute javascript each time a component is ajax-refreshed

我想 运行 一小段 javascript 代码用于列表的每个组件。现在我在附加到每个组件的行为的 onRenderHead() 回调中输出代码:

public class MyBehavior extends Behavior {
  @Override
  public void renderHead(Component component, IHeaderResponse response) {
    response.render(OnDomReadyHeaderItem.forScript(
        String.format("my_js_callback('%s')", component.getMarkupId())));
  }
}

这很好用。

但是现在我ajax-刷新组件列表(可能在列表中添加或删除组件)。如何确保在 ajax-refresh 之后为每个组件调用行为 javascript 代码? "wicket way" 这样做很简单吗?或者我应该在途中调用一些传递 AjaxRequestTarget 上下文的手工方法吗?

我建议在列表级别移动 javascript 代码。列表本身可以为它拥有的每个组件执行所需的 javascript。您应该使用附加到列表的 AjaxCallListener 解决 AJAX 刷新问题。使用此 class 可以指定在 ajax 请求完成时执行的 js 代码。可以找到更多详细信息 here

其实很简单:OnDomReadyHeaderItem.forScript()安装的javascript代码在ajax刷新后被调用。我最初的问题是无关紧要的:没有必要让它工作。

(Wicket 真的很棒。)