我对Wicket 7.3和JQuery 2.1.4有以下问题:
在动态选项卡式面板中(添加和删除选项卡),我想本地化选项卡标题并添加工具提示。我的代码
JQueryGenericPanel() {
....
populateItem( ListItem<ITab> item) {
getString();
在日志文件中产生警告:
尝试检索尚未添加到页面的组件的本地化字符串。这有时会导致返回无效或没有本地化资源。确保您没有在Component的构造函数
中调用Component#getString()
在方法
中的面板(位于选项卡上)中使用getString()onInitialize()
不起作用,因为为时已晚。标签已设置为“懒惰”。
是否有其他方法类似于“populateItem()”我可以使用?
**附录** 选项卡式面板的代码为:
public class MyTabbedPanel extends JQueryGenericPanel<List<ITab>> implements ITabsListener {
...
@Override
protected void onInitialize() {
super.onInitialize();
this.add( new ListView<ITab>( "tabs", this.getModel() ) {
...
@Override
protected void populateItem( ListItem<ITab> item ) {
Label link = new Label( "widgetId", new PropertyModel<String>( somePanel, "getTitle()" ) );
面板中的代码是:
private String title = "default";
public String getTitle() { return title; }
@Override
public void onInitialize() {
title = getString( "someKey" );
}
因此PropertyModel使用'getTitle()'获取标题。不幸的是,在调用'onInitialize()'之前会发生这种情况。因此标签标题显示“默认”而不是“someKey”的本地化文本。
答案 0 :(得分:0)
而不是
new Label(itemId, getString("key"))
...使用:
new Label(itemId, new ResourceModel("key"));
...或者如果你喜欢用字符串做的事情:
new Label(itemId, new AbstractReadOnlyModel<String>() {
public String getObject() {
return ... + getString("key") + ...;
}
});