Wicket - 参数化StringResourceModel的奇怪行为

Sti*_*ens 4 java wicket internationalization jodatime wicket-1.5

这是我的资源键:

Expired {0} days ago
Run Code Online (Sandbox Code Playgroud)

这是StringResourceModel的定义:

new StringResourceModel("store.expired.tooltip", null, Days.daysBetween(expirationDate, refDate));
Run Code Online (Sandbox Code Playgroud)

预期结果会像Expired 20 days以前一样,但实际结果是Expired P20D ago.

知道是什么导致了这个吗?我想我做的一切都是正确但不确定.

Don*_*oby 8

这实际上是你使用joda-time时的一个错误.见乔达的Javadoc .

Days.daysBetween(expirationDate, refDate)返回一个joda Days对象,其toString()方法返回ISO8601持续时间格式字符串,这就是你所看到的.

Days.daysBetween(expirationDate, refDate).getDays()相反,使用它将使它成为一个整数,应该正确格式化.