我可以在 Wicket 中将变量插值与 StringResourceModels 混合使用吗?
Can I mix variable interpolation with StringResourceModels in Wicket?
我想添加一个显示如下消息的标签:
privateFieldOfModel (interpolatedVariable: privateFieldOfModel)
.
例如:John Doe (Has id: 63412313), John Doe (Hat Id: 63412313)
我的 属性 文件如下所示:
languageDependentCode=CodeInSelectedLanguage //property is different for every lang
labelInfo=${name} (${languageDependentCode}: ${id})
我的Java:
div.add(new Label("infoLabel", new StringResourceModel("labelInfo",
new Model<>(myModel))));
我的模型看起来像这样:
public class MyModel{
private String id, name;
//getters for both
}
运行 然而它会抛出这个异常:
org.apache.wicket.WicketRuntimeException:
No get method defined for class: class MyModel expression: languageDependentCode
我能以某种方式理解。有没有一种方法可以将 languageDependentCode
插入到此 属性 中,而不用 wicket 认为它一定来自 MyModel
?
注:
MessageFormat.format()
不符合我的目的,因为它不会在语言更改时取代 ${languageDependentCode}
。
您需要使用 NestedStringResourceLoader(自 7.4.0/8.0.0-M1 起可用,参见 https://issues.apache.org/jira/browse/WICKET-6193)。
查看带有 tests/examples 的提交:https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=2b12b89
我想添加一个显示如下消息的标签:
privateFieldOfModel (interpolatedVariable: privateFieldOfModel)
.
例如:John Doe (Has id: 63412313), John Doe (Hat Id: 63412313)
我的 属性 文件如下所示:
languageDependentCode=CodeInSelectedLanguage //property is different for every lang
labelInfo=${name} (${languageDependentCode}: ${id})
我的Java:
div.add(new Label("infoLabel", new StringResourceModel("labelInfo",
new Model<>(myModel))));
我的模型看起来像这样:
public class MyModel{
private String id, name;
//getters for both
}
运行 然而它会抛出这个异常:
org.apache.wicket.WicketRuntimeException:
No get method defined for class: class MyModel expression: languageDependentCode
我能以某种方式理解。有没有一种方法可以将 languageDependentCode
插入到此 属性 中,而不用 wicket 认为它一定来自 MyModel
?
注:
MessageFormat.format()
不符合我的目的,因为它不会在语言更改时取代 ${languageDependentCode}
。
您需要使用 NestedStringResourceLoader(自 7.4.0/8.0.0-M1 起可用,参见 https://issues.apache.org/jira/browse/WICKET-6193)。
查看带有 tests/examples 的提交:https://git-wip-us.apache.org/repos/asf?p=wicket.git;h=2b12b89