Java Wicket:如何使用<;a href="&引用;目标="_“空白”&燃气轮机;

Java 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

在表格单元格中,我必须创建一个Wicket
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>