Превратить ссылки в панелях калитки в гиперссылки - PullRequest
1 голос
/ 17 февраля 2011

Я пытаюсь найти способ автоматического преобразования ссылок на панели в гиперссылки. Так, например, пользовательский ввод:

"And here you can find my awesome example: <a href="http://example.com" rel="nofollow">http://example.com</a>"

Возможно ли в wicket добавить элемент привязки к каждому тексту "http: // ...", поэтому приведенный выше пример будет выводить

"And here you can find my awesome example: <a href="http://example.com">http://example.com</a>"

вместо

Ответы [ 2 ]

3 голосов
/ 06 марта 2011

Вы можете использовать встроенные в Wicket SmartLinkLabel .

Из Javadoc:

Если у вас есть адреса электронной почты или веб-адреса в данных, которые выотображая, вы можете автоматически отображать эти фрагменты данных в виде гиперссылок, вам не нужно предпринимать никаких действий для преобразования этих данных.

3 голосов
/ 17 февраля 2011

Один из способов сделать это - расширить 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 , но я предпочитаю подход с меткой.

...