0

在 GWT 应用程序(使用 Java 7)中,我想为字符串变量中的每个 http/https 链接添加锚 html 标记。

它在嵌入模式下工作,但在生产中不工作。

private String clearTextContent(String txt) {
    txt = txt.replaceAll("<", "&lt;");
    txt = txt.replaceAll(">", "&gt;");

    txt = txt.replaceAll("\n", "");
    txt = txt.replaceAll("\\|", "<br/>");

    // Display Link for URLs
    txt = txt.replaceAll("(\\A|\\s)((http|https|ftp|mailto):\\S+)(\\s|\\z)", "$1<a target='_blank' href='$2'>$2</a>$4"); 
}

我也试过这个但不起作用:

    String URLregexp = "(^|\\s)((http|https):\\S+)(\\s|$)";
    txt = txt.replaceAll(URLregexp, "$1<a target='_blank' href='$2'>$2</a>$4");

我想要的例子:

输入:

Hello|http:///www.google.com|... That's it!

输出:

Hello|<a target='_blank' href='http:///www.google.com'>http:///www.google.com</a>|... That's it!

我读过在嵌入模式下 GWT 使用 javascript 正则表达式,而在生产中使用 java 正则表达式。

你有什么提示可以解决我的问题吗?

谢谢!

4

1 回答 1

0

如果你想在一个小部件中嵌入 HTML,并不是所有的小部件都能做到这一点,因为 > 或 < 和 & 将被它们的 ASCII 对应物替换。您需要使用 SafeHtml 和可以显示它的小部件。例如,您可以使用<g:HTML ui:field="htmlBlock">

您有几种方法可以生成可放入小部件的 SafeHtml。例如使用

SafeHtml safeHtml = SafeHtmlUtils.fromString(myCodeAsString);
htmlBlock.setHtml(safeHtml);

因此,请检查您的字符串变量显示在哪种类型的小部件中,并在必要时切换到另一个小部件。

于 2013-08-26T14:25:23.113 回答