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

Wicket-每次组件刷新时执行javascript,java,ajax,wicket,Java,Ajax,Wicket,我想为列表的每个组件运行一小段javascript代码。现在,我在附加到每个组件的行为的onRenderHead()回调中输出代码: public class MyBehavior extends Behavior { @Override public void renderHead(Component component, IHeaderResponse response) { response.render(OnDomReadyHeaderItem.forScript(

我想为列表的每个组件运行一小段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刷新之后为每个组件调用行为javascript代码?有没有一种简单的“小门方法”可以做到这一点?或者我应该调用一些手工制作的方法来传递途中的
AjaxRequestTarget
上下文吗?

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

事实上它相当简单:在ajax刷新后,
OnDomReadyHeaderItem.forScript()安装的javascript代码也被称为。我最初的问题与此毫不相干:没有必要让它起作用


(Wicket真的很震撼。)

事实上更简单:我刚刚意识到,
OnDomReadyHeaderItem.forScript()
安装的函数
my_js_回调
在ajax刷新后被调用。我最初的bug是其他东西。。。