コンソールログに以下のWARNINGが出ていたので、
気になって対処したので、対処方法を記述します。
エラー内容
WARN [2016-05-28 10:45:55,930] org.apache.wicket.Localizer:
Tried to retrieve a localized string for a component that has not yet been added to the page.
This can sometimes lead to an invalid or no localized resource returned.
Make sure you are not calling Component#getString() inside your Component's constructor. Offending component: [FooterPanel [Component id = footerPanel]]
Component
のコンストラクター内で、Component#getString()
をcall
すると、
ページクラスに追加される前リソースファイルを取りに行くから、別の場所に移動しろ。
と言っているように思います。
Stack Overflow
でVersion1.4以下とVersion1.5以降の対処方法が記載されています。
java - Calling getString() in constructor in Wicket gives error - Stack Overflow
対処方法
Panel
クラスのコンストラクタ内に記述していたgetString()
メソッドを
onInitialize
メソッド内に移動しました。
-
Before
public FooterPanel(String id) { super(id); add(new Label("sinceYear", getString("sinceYear"))); add(new Label("appName", getString("applicationName"))); add(new ExternalLink("authorLink", getString("authorLinkUrl"), getString("authorLinkLabelText"))); }
-
After
@Override protected void onInitialize() { super.onInitialize(); add(new Label("sinceYear", getString("sinceYear"))); add(new Label("appName", getString("applicationName"))); add(new ExternalLink("authorLink", getString("authorLinkUrl"), getString("authorLinkLabelText"))); }
以上です。
コメント