Wicket:如何将click事件处理程序添加到表行?

时间:2015-03-11 15:02:38

标签: java wicket

我想让表格中的每一行都响应鼠标点击。具体来说,我希望它转到链接URL。目前我的表定义如下

    <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>

如您所见,我有一个包含链接的<td>元素。

但是如果用户点击表格行的任何部分,我希望关注该链接。

根据this SO问题,可以为表行定义Javascript单击处理函数。

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

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

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

但处理程序函数永远不会被调用。这可以,或者我需要看一个不同的方法吗?

1 个答案:

答案 0 :(得分:2)

我的方法是将<tr> wicket组件设为例如WebMarkupContainer,并为AjaxEventBehavior事件附加click,并且相同目的地<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;
}
相关问题