2

私のウィケットアプリケーションでは、ページナビゲーションは、onClick()メソッドで新しいページのコンストラクターを呼び出して新しいページオブジェクトを作成することです。以下のように。

DisplayItem.add(new Link("edit") { 
@Override
   public void onClick() {
    try{
    setResponsePage(new ReportPage(object, getPageReference()));
       } catch ( CustomException e){
          /// set some feedback message
        }
   }
});

ReportPageには、いくつかのLoadableDetachableModels、PageableListViews、Panels、Fragmentsなどがあります。ReportPageのコンストラクターで例外処理を行っており例外が発生した場合はそれをスローします。以下のSes。(部分コード)

 public ReportPage(final Objectm, final PageReference pr) throws CustomException{

try{
final LoadableDetachableModel<MaintReport> ldm = 
         new LoadableDetachableModel<MaintReport>() {

            @Override
            protected MaintReport load() {
                return new MaintReport();
            }
        };

/*

Several LoadableDetachableModels, PageableListViews, Panels, Fragments  etc.

*/ 


} catch ( Exception ex){
// create Custom Exception 

} finally {

 // Clean up of stuff 

}

したがって、ページの作成中に例外が発生した場合。( finallyブロックで)クリーンアップするにはどうすればよいですか?。個々のオブジェクトをすべてnullに設定する必要がありますか?ガベージコレクション(またはGCに信号を送信)するWicketメソッドはありますか?

ありがとうございました

4

1 に答える 1

1

コンストラクター内で例外フォームをスローすると、半分初期化されたオブジェクトがガベージコレクションの対象になります。例外がスローされる前に別のオブジェクトが所有するコレクションにオブジェクトを追加するなどして何らかの理由でそれを防止しない限り、このオブジェクトとそのフィールドの割り当て解除について心配する必要はありません。また、finallyブロックで通常行うように、すでに割り当てられている可能性のあるアンマネージリソース(ファイルハンドルなど)を解放する必要があります。

于 2013-02-17T18:15:22.787 に答える