で外部リンクを作成する方法テーブルセル内で、新しいブラウザタブで応答を示すWicket ExternalLink
を作成する必要があります。 私はこのコード(ウィケット7.9)を使用しました:Wicket:<a href="..." target="_blank"> target="_blank">
columns.add(new AbstractColumn<WebService, String>(Model.of(" "))
{
@Override
public void populateItem(Item<ICellPopulator<WebService>> cellItem, String componentId,
IModel<WebService> serviceModel)
{
WebService ows = serviceModel.getObject();
String url = "http://www.geodata.com/map?service=WMS&request=GetCapabilities";
ExternalLink capabilitiesLink =
new ExternalLink(componentId, Model.of(url), Model.of("Caps"))
{
@Override
protected void onComponentTag(ComponentTag tag)
{
super.onComponentTag(tag);
tag.put("target", "_blank");
}
};
cellItem.add(capabilitiesLink);
}
});
をしかし、改札はこれをレンダリングする:
<div onclick="window.location.href='http://www.geodata.com/maps?service=WFS&request=GetCapabilities';return false;" target="_blank">Caps</div>
これは、新しいタブを開きません。
テーブルHTMLマークアップは、ウィケットによって生成されるので、私は、対応するマークアップで
<td><a wicket:id="link" href="..."></a></td>
を挿入することはできません。
Wicketにはどのようにして<a href=" ... " target="_blank">Caps</a>
を表示させることができますか?
また、onClick
(Javascript)を使用しない場合は、新しいブラウザタブを作成するにはどうすればよいですか。
の違いは、あなたの質問にあなたの代わりに 'A'の' div'を使用することです。 WicketはJavaScriptを使用しています。また、 'target'属性はマークアップ –
@ martin-gにあるかもしれません - リンクは' BootstrapDataTable'の中に置かれます。 'Panel'を使わずに' populateItem'を実装する際に ''を作成する方法はありますか? – JimHawkins
私はあなたの最初の試みが失敗した理由を指摘しました。将来誰かが同じように直面するかもしれない。フラグメントの使用はより軽い解決策です。 'onBeforeRender'、' onComponentTag'、 'onAfterRender'だけを扱うこともできますが、Fragment/Panelよりも優れているかどうかは疑問です。 –