【发布时间】:2011-10-26 20:41:13
【问题描述】:
我在<a/> 标记内有一个组件,该组件在单击时会打开一个弹出窗口。这是一个“添加到收藏夹”链接,适用于 KML 文件。我的 KML 文件有一个名为“favourite[boolean]”的字段。现在我想隐藏或显示我的“添加到收藏夹”链接。 KML 列表是用表格生成的:
public class CustomTracksAjaxDataTable<T> extends CustomAjaxDataTable<T> {
public CustomTracksAjaxDataTable(String id, List<IColumn<T>> iColumns,
ISortableDataProvider<T> tiSortableDataProvider, int rowsPerPage) {
super(id, iColumns, tiSortableDataProvider, rowsPerPage);
}
protected void onEventHandler(AjaxRequestTarget ajaxRequestTarget,
KMLFile file) {
setKMLData(file); // it just update map, dont care about it
add(new FavouriteStarIconState(file.isSaved()));
}
}
我试图添加一个行为:
public class FavouriteStarIconState extends AbstractDefaultAjaxBehavior {
private boolean isFavourite;
public FavouriteStarIconState(boolean isFavourite) {
super();
this.isFavourite = isFavourite;
}
@Override
protected void respond(AjaxRequestTarget target) {
if (isFavourite) {
target.appendJavascript("jQuery('.map_container_star').css(
{'display' : 'none' });");
} else {
target.appendJavascript("jQuery('.map_container_star').css(
{'display' : 'block' });");
}
}
@Override
public void renderHead(IHeaderResponse response) {
response.renderOnLoadJavascript(getCallbackScript().toString());
}
}
包含组件的 HTML 部分:
<div id="map_container">
<a wicket:id="favourite_star" class="map_container_star"></a>
</div>
这行不通。我用component.setVisible(false) 得到了同样的结果。我怎样才能躲起来工作?
【问题讨论】:
-
你看过
Component的isVisible()方法吗?您可以覆盖它,Wicket 会处理剩下的事情,您只需将组件添加到AjaxRequestTarget。这个解决方案有一些限制,但通常它是有效的。