【问题标题】:Dynamically add links into String in Wicket将链接动态添加到 Wicket 中的字符串中
【发布时间】:2011-09-16 08:52:18
【问题描述】:

我有一个字符串(用户消息),我想在其中找到(使用正则表达式)特殊代码并用链接替换它们。 (例如,@user 将被替换为<a href="wicket-url-to-user-profile">user</a> 事物。)在 Wicket 中如何实现?我不问正则表达式,这是针对 Wicket 的问题。

【问题讨论】:

  • 这些链接指向哪里?在应用程序内还是到外部 url?
  • 不确定您要问的是哪一部分。整个东西?无论如何,这是stackoverflow.com/questions/4234950/regex-for-beginners 的一个很好的链接。
  • 正则表达式很简单。我在问 Wicket 部分。
  • 你能举个例子说明你需要什么吗?以及您不确定的部分。
  • 例如,@user 将被替换为 user 事物。

标签: java hyperlink wicket dynamic


【解决方案1】:

事实上,Wicket 对此有一个非常强大的功能。

假设这是您的本地化字符串,键为“some.resource.key”:

This is a ${user}.

然后将以下内容添加到 Wicket 模板中:

<wicket:message key="some.resource.key">
    <a wicket:id="user">user</a>
</wicket:message>

在您的 Wicket 页面(或面板)中,只需添加您的链接,就像您将其添加到您放置 wicket 的级别:消息:

add(new Link("user"));

现在链接 - 您可以使用任何您喜欢的链接实现或任何其他组件 - 已正确显示在本地化字符串中。

【讨论】:

  • 正如我所说,文本是一些用户信息。我们不知道这个文本是什么,以及它是否包含任何代码。用户不知道语法${user_nick},文本可能包含语法错误。而且,所以您需要为每个用户昵称定义&lt;a wicket:id="user"&gt;user&lt;/a&gt;
  • 事实上,这不是一个(纯粹)与 Wicket 相关的问题。使用正则表达式查找要替换的字符串,提取用户名,找到用户并用链接替换字符串。就这么简单。要获取 Wicket 页面的正确 URL,您可以使用任何组件的 urlFor() 方法。
【解决方案2】:

Wicket 有 IResponseFilter。有了这个,您可以对最终的 HTML 进行后处理。 IE。您可以搜索 ${anything} 并将其替换为 'whatever you want'。 要创建漂亮的 URL,我建议您为特定域对象安装特定页面,例如Application#mountPage("/users/${user}", UsersPage.class),并使用以下命令创建 url:RequestCycle.get().urlFor(UsersPage.class, pageParameters),其中 'pageParameters' 包含带有键 ' 的条目user' 和 value '无论你用 RegEx 提取什么'。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-11
    • 2013-03-31
    • 2018-09-02
    • 1970-01-01
    • 2021-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多