gpt4 book ai didi

java - Apache Wicket 口 : dynamic key for message with embedded HTML

转载 作者:行者123 更新时间:2023-12-01 06:14:49 31 4
gpt4 key购买 nike

Wicket 支持包含 HTML 元素(如链接等)的复杂可翻译消息,如 https://cwiki.apache.org/confluence/display/WICKET/Everything+about+Wicket+internationalization 中所述。使用 Wicket 口:消息。例如:

<wicket:message key="messageKey">
<a wicket:id="link"><wicket:message key="linkLabel"></wicket:message></a>
</wicket:message>

和属性:

messageKey=Click on ${link}

在 Java 中

add(new BookmarkablePage<Void>("link", SomePage.class);

这很好用,但是消息键是硬编码在 HTML 中的。

就我而言,我希望在 Java 中动态确定消息 key 。对于常规消息(带有字符串参数),我可以使用 Label 和将键作为参数的 StringResourceModel 来实现。但是,如何对包含 Wicket 组件作为参数的消息执行相同的操作?我猜标记看起来像这样:

<span wicket:id="messageId">
<a wicket:id="link"><wicket:message key="linkLabel"></wicket:message></a>
<span>

但是 Java 会是什么? Label 不能有子项。 :(

===更新===

有一个 Wicket 类 org.apache.wicket.markup.resolver.WicketMessageResolver.MessageContainer 看起来很有趣。由于它是私有(private)静态的,我无法直接使用它,但如果我将代码复制粘贴到公共(public)类中并调整与组件层次结构相关的一些内容,我就接近解决方案了。但这是相当老套的。有更清洁的解决方案吗?

最佳答案

<wicket:message key="messageKey">
<a wicket:id="link">...</a>
</wicket:message>

看起来不正确。它应该是:

<a wicket:id="link"><wicket:message key="messageKey"/></a>

因为我猜您希望标签可点击。标签是文本(即 HTML 文本节点),因此它不能有子 HTML 元素。

对于 Java 端同样有效 - 链接应该是标签的父级。

HTH

关于java - Apache Wicket 口 : dynamic key for message with embedded HTML,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27303270/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com