Wicket:如何将点击事件处理程序添加到 table 行?

Wicket: How to add a click event handler to a table row?

我想让 table 中的每一行响应鼠标点击。具体来说,我希望它转到 link URL。目前我的table是这样定义的

    <ul wicket:id="componentStatus" class="component-status">
        <li wicket:id="equipComponentInst">
            <table class="full-width">
                <tr>
                    <td><div wicket:id="<XXX>ComponentPanel"></div></td>
                    <td><a wicket:id="<XXX>DetailLink" class="pull-right"><img wicket:id="detailLinkImg" border="0px"/></a></td>
                </tr>
            </table>
        </li>
    </ul>

如您所见,我有一个包含 link.

<td> 元素

但如果用户单击 table 行的任何部分,我希望跟随 link。

根据 this SO 问题,可以为 table 行定义 Java 脚本点击处理函数。

所以我在我的 Java 代码中添加了这样的点击处理程序

@Override
public void renderHead(IHeaderResponse response) {
    super.renderHead(response);

    response.render(OnLoadHeaderItem.forScript("$('tr').click( function() { window.location = $(this).find('a').attr('href');})"));
}

但是从未调用过处理函数。这行得通吗,还是我需要考虑其他方法?

我的方法是使 <tr> 成为一个 wicket 组件,例如 WebMarkupContainer 并为 click 事件附加一个 AjaxEventBehavior,然后转到与 <XXX>DetailLink 相同的目的地指向您。

示例:

private WebMarkupContainer tr() {
    WebMarkupContainer wmc = new WebMarkupContainer("tr");
    wmc.add(new AjaxEventBehavior("click") {

        @Override
        protected void onEvent(AjaxRequestTarget target) {
            //go to the same place as the XXXDetailLink
        }
    });
    return wmc;
}