运行 javascript 在 renderHead 中以 markupId 作为 Wicket 中的参数

Run javascript in renderHead with markupId as a parameter in Wicket

我在这个面板中有一个面板“MainPanel”和组件“MyComponent”。我想将组件的 markupId 作为参数传递给 javascript 函数,该函数将在 renderHead() 中调用。怎么做?


    public MainPanel(String id) {
        super(id);
        MyComponent div = new MyComponent("div");
        div.setmarkupId("customeUniqueId");
        div.add(new AjaxEventBehavior("click") {

            @Override
            protected void onEvent(AjaxRequestTarget target) {

                String markupId = div.getMarkupId();
                target.appendJavaScript("window.location.reload();");
                target.appendJavaScript(jsReload(markupId));

            }
        }
    }


    @Override
    public void renderHead(IHeaderResponse response) {
        super.renderHead(response);
        // how to use here div.markupId value as a parameter???
        response.render(OnDomReadyHeaderItem.forScript(String.format("my_js_callback('%s')", div.getMarkupId())));
    }
}

首先,您需要将 div 添加到 MainPanel:add(div);。我猜你的代码中已经有了它,但它在显示的代码段中丢失了。

然后您可以使用 get("div").getMarkupId() 到达 div,即获得 ID 为“div”的 child。另一种方法是将 MyComponent div 提取为 MainPanel class 的成员字段,然后只使用 div.getMarkupId().