Java StringResourceModel仅适用于标签

Java StringResourceModel仅适用于标签,java,internationalization,wicket,resourcebundle,Java,Internationalization,Wicket,Resourcebundle,我试图创建一个带有用户名的链接(即动态数据),但无法使StringResourceModel与链接一起工作 我的代码看起来像: 特性: some.key=User name is: {0} 爪哇: HTML: HTML: 要替换的某些文本 (属性文件相同) 我的问题是,我假设StringResourceModel与Links不兼容,对吗(我称之为假设,因为我在JavaDOC中没有看到任何关于这方面的内容) 如果没有,那么StringResourceModel如何直接与链接一起使用,而没有中介

我试图创建一个带有用户名的链接(即动态数据),但无法使
StringResourceModel
链接一起工作
我的代码看起来像:

特性:

some.key=User name is: {0}
爪哇:

HTML:

HTML:

要替换的某些文本
(属性文件相同)

我的问题是,我假设
StringResourceModel
Link
s不兼容,对吗(我称之为假设,因为我在JavaDOC中没有看到任何关于这方面的内容)

如果没有,那么
StringResourceModel
如何直接与
链接一起使用,而没有中介
标签

在第一个示例中,您没有告诉wicket替换文本。您只需将模型应用于链接,而不告诉wicket如何处理它。 要解决这个问题,您需要用类似于

<a wicket:id="someid"><wicket:message key="some.key">some text to replace</wicket:message></a>
要替换的某些文本

我不完全记得语法,现在无法尝试此操作,但它应该会对您有所帮助。

链接
构造函数中的
model
参数不打算用作显示值。要设置链接的文本,您需要显式向其添加
标签

Link<Void> link = new Link<Void>("link");
link.add(new Label("label", model);
add(link);
Link-Link=新链接(“链接”);
添加(新标签(“标签”,型号);
添加(链接);
和HTML格式:

<a wicket:id="link"><span wicket:id="label"></span></a>

构造函数中的模型用于onclick方法(或类似方法)

IModel模型=。。。;
链接=新链接(“链接”,型号){
公共void onClick(){
MyObject obj=getModelObject();
setResponsePage(新MyPage(obj));
}
};
添加(链接);

这与我最初做的非常相似,但没有起作用。不过,今天晚些时候我会尝试一下,以确保我没有遗漏任何东西。谢谢。@eitanfar您能解释一下它“不起作用”的原因吗?您看到wicket message标记的未替换内容了吗?您收到错误消息了吗?模型没有合并到您的消息中吗?我看到了资源文本,但没有解析参数。换句话说,我看到了文本“用户名为:{0}”。但是,这可能是由其他原因造成的(例如参数为null或其他),这就是我想再次检查的原因。@Etanfar在进一步挖掘之后,看起来您只能将标签的模型添加到外部链接,而不是简单的链接。如果这不是药剂,我认为,您必须坚持添加标签。这是我基于直觉所做的。太糟糕了,Wicket JavaDocs中没有提到它。
<a wicket:id="someid"><span wicket:id="anotherid">some text to replace</span></a>
<a wicket:id="someid"><wicket:message key="some.key">some text to replace</wicket:message></a>
Link<Void> link = new Link<Void>("link");
link.add(new Label("label", model);
add(link);
<a wicket:id="link"><span wicket:id="label"></span></a>
IModel<MyObject> model = ...;
Link<MyObject> link = new Link<MyObject>("link", model) {
    public void onClick() {
        MyObject obj = getModelObject();
        setResponsePage(new MyPage(obj));
    }
};
add(link);