将检票面板中的链接转换为超链接

发布于 2024-10-18 01:06:28 字数 322 浏览 1 评论 0原文

我正在尝试找到一种方法来自动将面板中的链接转换为超链接。例如,用户输入是:

“在这里您可以找到我很棒的示例:http://example.com"

是否可以在 wicket 中向每个“http://...”文本添加锚元素,因此上面的示例将输出

"在这里您可以找到我很棒的示例: " a href="http://example.com">http://example.com"

代替?

I'm trying to find a way to automatically convert links in a panel to hyper-links. So for example a user input is:

"And here you can find my awesome example: http://example.com"

Is it possible in wicket to add an anchor element to each "http://..." text, so the above example would output

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

instead?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

横笛休吹塞上声 2024-10-25 01:06:28

您可以使用 Wicket 内置的 SmartLinkLabel

来自 Javadoc:

如果您显示的数据中有电子邮件地址或网址,则您可以自动将这些数据显示为超链接,而无需采取任何操作来转换该数据。

You can use Wicket's built in SmartLinkLabel.

From the Javadoc:

If you have email addresses or web URLs in the data that you are displaying, then you can automatically display those pieces of data as hyperlinks, you will not have to take any action to convert that data.

标点 2024-10-25 01:06:28

一种方法是扩展 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
    }
}

您还可以使用自定义 IModelIConverter 但我更喜欢标签方法。

One way to do this is to extend Label and override onComponentTagBody

Something like:

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
    }
}

You can also accomplish this with a custom IModel or IConverter but I prefer the Label approach.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文