0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

wicket 画面初期表示の段階でAjaxRequestTargetを取得したい

Last updated at Posted at 2024-01-31

背景

画面初期表示時にエラーチェックなどを行って、
メッセージを表示するコンポーネントで表示しようとしても、
例外が発生して落ちてしまう。
こんなときどうする?というお話。

方法

onLoadのビヘイビアを使えば解決するかもしれない。

testForm = new Form<Void>("TestForm") {
	@Override
	protected void onInitialize() {
        try{
            super.onInitialize();
        }catch(Exception e){
            System.out.println("Error: " + e.getMessage());
        }
	}
    add(testForm);
    // ↓ここの部分
    add(new AjaxEventBehavior("onload") {
        @Override
        protected void onEvent(AjaxRequestTarget target) {
            try {
                // 何かしらの処理
			} catch (Exception e) {
    	        System.out.println("Error: " + e.getMessage());
			}
        }
    }); 
}

簡単な説明

onInitializeなどの画面初期表示時に動作してくれる処理たちは、
あらかじめ指定された画面を表示することに一生懸命になってしまっている。

画面の初期表示が終わってボールがクライアント側に戻ると
ようやく変更要求(AjaxRequestTarget)を受け付けてくれる。

AjaxEventBehavior("onload")をaddしてあげることで、
javascriptのonloadと同じタイミングで自動で動いてくれる。

onInitializeの動き

サーバ側で画面を描画しクライアント側へ返す
このとき、変更要求(AjaxRequestTarget)は機能しない。

onLoad(AjaxEventBehavior)の動き

サーバ側で生成された画面一式を受けったら動く
このとき、変更要求(AjaxRequestTarget)は機能する。

画面初期表示時の他のライフタイムサイクル

onInitialize()

コンポーネントやページが初期化される際に呼び出される。

onBeforeRender()

コンポーネントやページがレンダリングされる前に呼び出される。

onAfterRender()

コンポーネントやページが完全にレンダリングされた後に呼び出される。

onConfigure()

コンポーネントが構成される際に呼び出される。

onDetach()

コンポーネントがdetachされる際に呼び出される。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?