在不使用“链接”组件的情况下向非锚定组件添加单击行为

时间:2014-05-21 14:27:56

标签: java wicket

我有一个DataView,其html是这样的:

<table>
<thead>
    <tr>
        <td>Username</td>
        <td>First Name</td>
        <td>Last Name</td>         
   </tr>
</thead>
<tbody>
    <tr wicket:id="dataView">
         <td wicket:id="username">Username</td>
         <td wicket:id="firstName">First Name</td>
         <td wicket:id="lastName">Last Name</td>         
    </tr>
</tbody>
</table>

我的目标是让整行可以点击。我会使用Link组件,但我不能 - <tr>中的每个dataView元素都已经是Item。是否有一种简单的方法可以追加Link在未附加到<a>标记时获得的行为?即它生成javascript以执行链接功能的行为。

1 个答案:

答案 0 :(得分:4)

选项1 :为每个项目添加“onclick”AjaxEventBehavior

new DataView<T>(id, dataProvider) {

    @Override
    protected void populateItem(Item<T> item) {

        item.add(new AjaxEventBehavior("onclick") {

            @Override
            protected void onEvent(AjaxRequestTarget target) {
                // This will execute when row is clicked
            }

        });

        // Continue populating item here
    }
}

选项2:如果您不想使用Ajax,可以让每行中的所有单元格都链接到同一个东西,然后使用CSS使链接占用整个单元格空间。请参阅此JSFiddle example