在Wicket中,是否可以让一个属性的值引用另一个属性?例如,如果我有<entry key="site.name">My Site</entry>
之类的属性,是否有其他属性可以在其值中使用site.name
的值?
我尝试使用像<entry key="page.title">About ${site.name}</entry>
这样的东西,但是Wicket抛出异常,因为它试图将site.name
解析为模型的属性......这是有道理的。但是有另一种语法 允许一个属性引用另一个属性的值吗?
顺便说一下,我正在运行Wicket 6.6。
答案 0 :(得分:2)
要回答我自己的问题,代码中的快速峰值显示Wicket使用java.util.Properties加载属性,Apache Commons Configuration只是为键值对解析流。根据他们使用ANT等工具的经验,它不会像开发人员所期望的那样进行任何属性扩展/替换。
有Properties
的替代方法,如{{3}},可执行扩展但Properties
则不会。因此,Wicket也不会 - 它只是在写入时加载属性。 Wicket唯一的替代是在呈现页面时用于模型属性,而不是用于单词的“属性文件”意义上的属性。
答案 1 :(得分:0)
看一看 在Wicket StringResourceModel。
doc中的示例:
label.greetings=Welcome, ${name}!
和
new Label("greetings", new StringResourceModel("label.greetings", this, new Model(user)));
答案 2 :(得分:0)
您可以编写自己的ResourceModel来替换键:http://pastebin.com/38WB2XDF
ReplacingResourceModel将可用于:
<dependency>
<groupId>org.wicketstuff</groupId>
<artifactId>wicketstuff-minis</artifactId>
<version>7.0.0-M6</version>
</dependency>
和
<dependency>
<groupId>org.wicketstuff</groupId>
<artifactId>wicketstuff-minis</artifactId>
<version>6.20.0</version>
</dependency>