Java 将单击行为添加到非锚定构件而不使用链接构件
我有一个Java 将单击行为添加到非锚定构件而不使用链接构件,java,wicket,Java,Wicket,我有一个数据视图,它的html是这样的: <table> <thead> <tr> <td>Username</td> <td>First Name</td> <td>Last Name</td> </tr> </thead> <tbody> <tr wicke
数据视图
,它的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>
用户名
名字
姓
用户名
名字
姓
我的目标是让整行都可以点击。我会使用
链接
组件,但我不能-数据视图中的每个
元素都已经是项
。当链接未附加到
标记时,是否有一种简单的方法附加该链接所获得的行为?即,它生成javascript以执行链接功能的行为 选项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
}
}
newdataview(id,dataProvider){
@凌驾
受保护的无效填充项(项){
添加(新的AjaxEventBehavior(“onclick”){
@凌驾
受保护的void onEvent(AjaxRequestTarget目标){
//这将在单击行时执行
}
});
//继续在此处填充项目
}
}
选项2:如果不想使用Ajax,可以将每行中的所有单元格作为指向同一对象的链接,然后使用CSS使链接占据整个单元格空间。查看此项。选项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
}
}
newdataview(id,dataProvider){
@凌驾
受保护的无效填充项(项){
添加(新的AjaxEventBehavior(“onclick”){
@凌驾
受保护的void onEvent(AjaxRequestTarget目标){
//这将在单击行时执行
}
});
//继续在此处填充项目
}
}
选项2:如果不想使用Ajax,可以将每行中的所有单元格作为指向同一对象的链接,然后使用CSS使链接占据整个单元格空间。请参阅。注意,向每个表单元格添加onclick
会生成大量Javascript代码,这可能会降低页面速度。@Angstatt530使用ajax行为不会导致标准链接的开销比必要的开销大得多?@RobAu因为该行为会添加到每个项上
,它只为每一行生成,而不是为每个单元格生成(这是可以的)。为了获得更好的性能:您可以将onclick
添加到表中,并编写一些自定义JavaScript来获取所单击元素的父元素,直到到达TR
。此TR
应具有id
(setOutputMarkupId(true))。然后,您可以将此id
作为额外参数传递给行为,并在wicket中找到组件树中匹配的TR
。另请参见此示例:@WiseTree I添加了第二个选项,以防您尝试不使用Ajax。只需使用BookmarkablePageLink
,而不是像我的示例所示在HTML中硬编码链接。请注意,向每个表单元格添加onclick
,将生成大量Javascript代码,这可能会减慢页面的速度。@Angstat530不会使用ajax行为会导致标准链接的开销大得多?@RobAu因为行为将添加到每个Item
,因此它只会为每行生成,而不是单元格(这是正常的ish)。为了获得更好的性能:您可以将onclick
添加到表中,并编写一些自定义JavaScript来获取单击元素的父元素,直到到达TR
。此TR
应具有id
(setOutputMarkupId(true))。然后,您可以将此id
作为额外参数传递给行为,并在wicket中找到组件树中匹配的TR
。另请参见此示例:@WiseTree I添加了第二个选项,以防您尝试不使用Ajax。只需使用BookmarkablePageLink
,而不是像我的示例所示在HTML中硬编码链接。