【发布时间】:2023-03-29 01:23:01
【问题描述】:
Wicket 支持包含 HTML 元素(如链接等)的复杂可翻译消息,如 https://cwiki.apache.org/confluence/display/WICKET/Everything+about+Wicket+internationalization 中所述,使用 wicket:message。例如:
<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 中动态确定消息键。对于常规消息(带有字符串参数),我可以使用 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 看起来很有趣。由于它是私有静态的,我不能直接使用它,但是如果我将代码复制粘贴到公共类中并调整与组件层次结构相关的一些事情,我就接近解决方案了。但这很hacky。有更清洁的解决方案吗?
【问题讨论】:
标签: java internationalization wicket