Wicket:ページマップ内のページを削除またはスキップする方法は?

ユーザーが「戻る」ボタンと「進む」ボタンを使ってナビゲートすると、ページマップ内のページを「スキップ」するための方法はありますか?

単にページマップからページを削除すると例外が生成されます:org.apache.wicket.protocol.http.PageExpiredException:セッション[pagemap
= null、componentPath = 3、versionNumber =
0]でレンダリングされたページを見つけることができません。

ここに私のユースケースがあります:
レポート作成ページがあります。ユーザーはボタンをクリックしてレポートを確認し、レポート保留中のページにリダイレクトされ、実際のレポートが再生成されるまでレポート処理の進捗状況が表示されます。その後、ユーザーはレポートページにリダイレクトされます。

report creation page –> report pending page –> report
result page.

レポートが生成されると、ユーザーはレポートの保留中のページに戻ることができないようにしたい。ユーザーがレポート保留中のページに移動すると、「レポート作成ページ」に移動しようとしました。
レポート保留中のページのonBeforeRender()の下にあります。

@Override
public void onBeforeRender() {

    if (!reportPending && previousPage != null) 
    {
        RequestCycle.get().setRedirect(true);
        RequestCycle.get().setResponsePage(previousPage);
    } 

    super.onBeforeRender();
}

In I.E., it works ok, but then I end up with the “report
creation page” showing twice when the user goes back twice. report
result page -(back)-> report creation page -(back) ->) report
creation page. Not ideal.

Firefoxでは、戻るボタンを押すたびに、「レポート作成ページ」が無限に表示されます。基本的には、戻るボタンが無期限にレポート保留ページを指しているかのようです。

例外が発生することなく閲覧履歴(ページマップ)から保留中のレポートを削除する方法はありますか?
どんな洞察にも感謝します。前もって感謝します。

ベストアンサー

あなたが試してみることができるのは、自分自身でこれをやっていないのですが、
onBeforeRender オーバーライドで
RestartResponseException
をスローすることです。この問題は、次に表示するページになります。ユーザーがレポートの作成ページに戻るか、ダウンロードページに進むのですか?ページマップで最後にレンダリングされたページを見ることができますが、完全に機能しない場合は、ユーザーを悩ませることになります。

このページマジックの代わりに、作成ページに表示される(モーダル)プログレスバーを作成し、中間ページをスキップして、完了時にダウンロードリンクを表示するか、ブラウザをダウンロードページにリダイレクトすることができます。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です