質問

私はAjaxPagingNavigatorを持っています。基本的には一定の条件、AjaxPagingNavigatorページがリロードされるリストに。これが起こるとき、私は唯一のリストが1つの以上のページが含まれている場合ナビゲーターをレンダリングします。

私は私のAjaxPagingNavigatorでの視認性の状態をチェックし、ナビゲーターを介して、更新されたときにように/無効可視性を可能にすることができるように、私はハンドラをアタッチすることができます。ここで、

だから、誰もが知っているん。それは目に見えるかのどちらかであるAJAX?

マークアップ:

<div wicket:id="mainWrap">
    <div wicket:id="navigator"/>
    <div wicket:id="listWrap">
        <div wicket:id="list><!-- here be content --></div>
    </div>
</div>

だから私は、「リスト」や包装材料と一緒に「ナビゲーター」を更新し、「mainWrap」を更新し、AJAXイベントを持っています。

これは全体のことをトリガーするイベントです。

 protected void onSubmit(AjaxRequestTarget target, Form<?> form) {
     List foo = null; // do work to get list
     model.setFound(found); // update the model (thus updating "list")
     target.addComponent(mainWrap);
}

編集:私は書くことができます知っている。

navigator.setVisibility(list.getPageCount() > 1);

ナビゲータを作成した後にし、モデルを更新した後、私はAjaxPagingNavigatorのサブクラスでそれをカプセル化することを期待していた。

役に立ちましたか?

解決

Wicketの要求はなく誤って行う可能性があります任意の呼び出します。

を数えるごとに複数回isVisible呼ぶよう

は、オーバーライドされたisVisible方法で高価な計算を行うには注意してください

一般的に、これについて移動する最良の方法はonConfigureをオーバーライドして、手動での可視性フラグを設定することです。

@Override
void onConfigure() {
    super.onConfigure();
    setVisible(isVisible() && someExpensiveToCalculateCondition);
}

onConfigureは(onBeforeRenderのみ可視コンポーネントに対して呼び出されている間)、見えないものも含め、すべてのコンポーネントの要求の処理中に一度だけ呼び出され、呼び出されます。

他のヒント

私は自動改札に触れたので、

これは、しばらくしているが、メモリが提供する場合:

あなたはそれが唯一の希望条件で表示されるように、あなたの「ナビゲーター」オブジェクトののisVisible()メソッドをオーバーライドすることはできません?

例えば。

のようなもの
.addComponent(new AjaxPagingNavigator(...) {
  @Override public boolean isVisible() { 
    return model.getFound().size() > 25;
  }
});
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top