0

Wicket 1.5で、コンポーネントを拡張し、@ StatelessComponentアノテーションを付けることで、ステートレスコンポーネントを作成しました。

StatelessCheckerを使用して、コンポーネントがステートフル/ステートレスであることを確認しようとしました。

しかし、私はチェックすることができません、これが私が試していたコードです。

@StatelessComponent

パブリッククラスStatelessTextはTextFieldを拡張します

//クライアントクラス
StatelessTexttest= new StatelessText( "test");

StatelessChecker sc = new StatelessChecker();

  sc.onBeforeRender(test);

コンソールに何も表示されないか、例外/エラーが表示されません。

たぶん私は正しい方法を使用していません、誰かが私をここに案内してくれますか?ヘルプに感謝します。

4

2 に答える 2

1

WicketApplicationの初期化中にStatelessCheckerを登録する必要があります。

/**
 * @see org.apache.wicket.Application#init()
 */
@Override
public void init() {
    super.init();

    // might want to check if you're in dev mode or not...
    getComponentPreOnBeforeRenderListeners().add(new StatelessChecker());
}
于 2012-05-15T18:37:50.553 に答える
0

クラスでStatelesscheckerを明示的に呼び出す必要はありません。Throstenが言ったように、それをWebApplications initに追加し、チェックするクラスにStatelesscomponentとして注釈を付ける必要があります。アプリケーションがweb.xmlで開発モードであると確認されている場合、このページがStatefullの場合、このページを呼び出すときにランタイムエラーが発生します。

あなたがそこで何をしようとしているのか理解できませんでした。なぜクラスのインスタンスをそれ自体で保持しているのですか?シングルトンを構築しようとしていますか?そして、とにかくStatelessTextにはどのような目的がありますか?通常の形式のテキストフィールドは、明示的に追加されたAjax動作がない限り、ステートレスになります。

于 2012-05-16T10:24:26.147 に答える