运行 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()
.
我在这个面板中有一个面板“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()
.