将wicket面板中的链接转换为超链接

时间:2011-02-17 14:08:37

标签: wicket

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

"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 个答案:

答案 0 :(得分:3)

执行此操作的一种方法是扩展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完成此操作,但我更喜欢Label方法。

答案 1 :(得分:3)

您可以使用Wicket内置的SmartLinkLabel

来自Javadoc:

  

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