Превратить ссылки в панелях калитки в гиперссылки
Я пытаюсь найти способ автоматического преобразования ссылок на панели в гиперссылки. Так, например, пользовательский ввод:
"And here you can find my awesome example: http://example.com"
Можно ли в wicket добавить элемент привязки к каждому тексту "http://...", поэтому приведенный выше пример будет выводить
"And here you can find my awesome example: <a href="http://example.com">http://example.com</a>"
вместо?
2 ответа
Вы можете использовать встроенную в SmartLinkLabel калитку.
Из Javadoc:
Если у вас есть адреса электронной почты или веб-адреса в данных, которые вы отображаете, то вы можете автоматически отображать эти фрагменты данных в виде гиперссылок, вам не придется предпринимать никаких действий для преобразования этих данных.
Один из способов сделать это - расширить Label и переопределить onComponentTagBody.
Что-то вроде:
public class AnchorizeLabel extends Label {
public AnchorizeLabel(String id, String body) {
super(id, body);
}
@Override
protected void onComponentTagBody(MarkupStream stream, ComponentTag tag) {
String newBody = createAnchors(getDefaultModelObjectAsString());
replaceComponentTagBody(stream, tag, newBody);
}
private String createAnchors(String body) {
// regex magic to create links
}
}
Вы также можете сделать это с помощью собственного IModel или IConverter, но я предпочитаю подход Label.