最初に別のパネル (「読み込み中」と表示される回転する円) に置き換えるパネルがあり、しばらくすると AJAX イベントで元に戻ります。だから私がすることは次のとおりです。
@Override
protected void onConfigure() {
if (!content.isLoaded()) {
tmp = new LoadingCircle(getId(), "Loading...");
this.replaceWith(tmp);
}
}
public void onLoaded(AjaxRequestTarget target) {
if (tmp != null) {
tmp.replaceWith(this);
tmp = null;
}
target.add(this);
}
これは機能するため、パネルがページに表示されます。ただし、このパネルにはいくつかのラベルが付いたサブパネルがいくつかあり、それらは更新されません。ページをリロードすると更新されたラベルが表示されますが、AJAX でパネル全体を表示した直後ではありません。
onConfigure
およびメソッドが 1 回だけ呼び出されることに気付きonBeforeRender
ました。パネルが作成されたときですが、実際に AJAX を使用して初めて表示されたときは呼び出されません。サブパネルについても同じであるため、更新されない理由が説明されます。しかし問題は、パネルが AJAX リクエスト ターゲットに追加されたときに、パネルが更新されない (更新されたモデル値が使用されない) のはなぜですか?
編集:これは関連があると思います: https://issues.apache.org/jira/browse/WICKET-5107。それでも、コードを機能させるには何を変更すればよいのでしょうか?