Java Wicket:如何使用<;a href="&引用;目标="_“空白”&燃气轮机;
在表格单元格中,我必须创建一个WicketJava Wicket:如何使用<;a href="&引用;目标="_“空白”&燃气轮机;,java,wicket,Java,Wicket,在表格单元格中,我必须创建一个WicketExternalLink,在新的浏览器选项卡中显示响应。 我使用了以下代码(Wicket 7.9): columns.add(新的抽象列(Model.of(“”)) { @凌驾 public void populateItem(项cellItem、字符串componentId、, IModel服务模型) { WebService ows=serviceModel.getObject(); 字符串url=”http://www.geodata.com/ma
ExternalLink
,在新的浏览器选项卡中显示响应。
我使用了以下代码(Wicket 7.9):
columns.add(新的抽象列(Model.of(“”))
{
@凌驾
public void populateItem(项cellItem、字符串componentId、,
IModel服务模型)
{
WebService ows=serviceModel.getObject();
字符串url=”http://www.geodata.com/map?service=WMS&request=GetCapabilities";
外部墨水功能链接=
新的外部链接(componentId、Model.of(url)、Model.of(“Caps”))
{
@凌驾
受保护的无效onComponentTag(ComponentTag标记)
{
super.onComponentTag(tag);
tag.put(“目标”,“空白”);
}
};
cellItem.add(capabilitiesLink);
}
});
但是Wicket提出了这一点:Caps
这不会打开新选项卡
表格HTML标记是由Wicket生成的,因此我无法插入
在相应的标记中
如何强制Wicket渲染
?
或者,当我无法避免使用
onClick
(Javascript)时,如何创建新的浏览器选项卡?我通过使用以下简单标记创建Wickets面板的扩展来解决问题:
<!DOCTYPE html>
<html xmlns:wicket="http://wicket.apache.org">
<head>
<meta charset="UTF-8">
</head>
<body>
<wicket:panel>
<a wicket:id="link"></a>
</wicket:panel>
</body>
</html>
在创建表列的代码中:
columns.add(new AbstractColumn<WebService, String>(Model.of(" "))
{
@Override
public void populateItem(Item<ICellPopulator<WebService>> cellItem, String componentId,
IModel<WebService> serviceModel)
{
String url = "http://www.geodata.com/map?service=WMS&request=GetCapabilities";
cellItem.add(new LinkTargetBlankPanel("link", url, "GetCapabilities"));
}
});
columns.add(新的抽象列(Model.of(“”))
{
@凌驾
public void populateItem(项cellItem、字符串componentId、,
IModel服务模型)
{
字符串url=”http://www.geodata.com/map?service=WMS&request=GetCapabilities";
添加(新的LinkTargetBlankPanel(“link”,url,“GetCapabilities”);
}
});
java:
ExternalLink("link", new PropertyModel<>(model, "url"))
ExternalLink(“链接”,新属性模型(模型,“url”))
html:
<td><a target="_blank" wicket:id="link">Open</a></td>
打开
不同之处在于,在您的问题中,您使用了div
而不是a
。这就是Wicket使用JavaScript的原因。target
属性也可以位于markup@martin-g-链接位于BootstrapDataTable
中。在我实现的populateItem
中,有没有一种方法可以不使用面板创建
?我刚才指出了您第一次尝试失败的原因。也许将来会有人面临同样的问题。使用碎片是一种更轻的解决方案。也可以通过只处理onBeforeRender
、onComponentTag
和onAfterRender
来实现这一点,但它是否比片段/面板更好还值得怀疑。
ExternalLink("link", new PropertyModel<>(model, "url"))
<td><a target="_blank" wicket:id="link">Open</a></td>