【发布时间】:2012-08-16 10:09:17
【问题描述】:
我关注this example,但我想更改它。当您单击某行上的任何位置时,我想选择行,而不仅仅是某个值,因此我添加了AjaxEventBehavior。问题是选择了播放器,但行的颜色仍然相同。怎么了?
listItem.add(new AjaxEventBehavior("onclick") {
private static final long serialVersionUID = 1L;
@Override
protected void onEvent(final AjaxRequestTarget target) {
selectedPlayer = player;
HighlitableDataItem<Player> hitem = (HighlitableDataItem<Player>) listItem;
hitem.toggleHighlite();
}
});
【问题讨论】:
-
您需要将您的
hitem添加到target以更新它抛出 AJAx -
谢谢它的工作原理。更改此评论以回答以接受它
-
一些附加信息是:如果您需要重新绘制组件(主要是容器),建议将其输出标记 id 设置为 true (
component.setOutputMarkupId(true)),以便 wicket 能够通过阿贾克斯。重新绘制检票口时,将从组件使用的模型中拉数据并刷新组件的数据/表示。 -
我建议在(纯或 jquery)javascript 中执行这种逻辑。使用 Ajax 来设置 HTML 元素的样式可能有点矫枉过正,当服务器处于临界负载水平或客户端连接太慢时,您可能会遇到烦人的延迟。也就是说,如果您正在执行一些服务器端所需的逻辑(例如跟踪所选元素),我会同意使用 Ajax。
-
请更改您的评论也回答。我想关闭这个问题