【问题标题】:Run javascript in renderHead with markupId as a parameter in Wicket在 Wicket 中使用 markupId 作为参数在 renderHead 中运行 javascript
【发布时间】:2021-02-11 08:46:57
【问题描述】:

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

【问题讨论】:

    标签: java wicket


    【解决方案1】:

    首先,您需要将 div 添加到 MainPanel:add(div);。我猜您的代码中已经包含它,但在显示的 sn-p 中缺少它。

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

    【讨论】:

    • get child with id "div" 是什么意思?我收到错误 get("div").getMarkupId() 在这个电话之后
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-27
    • 2015-06-04
    • 2018-07-12
    • 2021-05-15
    • 2020-01-19
    • 1970-01-01
    相关资源
    最近更新 更多