セッションスコープを持つ小さなシームアプリで遊んでいます。最後の方法は、メールとして送信することです。メールを送信した後にセッションを無効にするにはどうすればよいですか? 現在、ユーザーが最初の URL を再度呼び出すと、セッションは存続し、以前に入力されたフォーム データはすべて残っています。
会話と ejb でそれを行う方法の例を見つけましたが、POJO とセッションではそうではありませんでした。
ありがとう、ローリー
ISASIの回答に従って、このコードを使用してセッションを無効にすることができます。
Session.instance().invalidate();
フォローアップの「質問」(奇妙なことに、回答として追加したもの)への回答。ユーザーに成功を通知した後にセッションを閉じるには、「確認」ページを作成し、「成功」結果に関連付けられたルールに基づいてそのページにリダイレクトします。次に、セッションを無効にするページ アクションを作成します。
<page view-id="/process/confirm.xhtml" action="#{emailManager.completeSession}">
技術的には、セッションはページをレンダリングする前に閉じられるため、セッション データへのアクセスに関してタイミングの問題が発生する可能性があるため、ページ パラメーターをハックして補正する必要がある場合があります。これは、基本的に、電子メールごとにセッションを使用して「間違った」ことを行っているためです。ビューのレンダリング後に会話を終了する @End アノテーションがあるため、会話を使用する方がずっと簡単です。
アプリケーションに複数のタスクが含まれる場合は、タスク間で保持されている状態が失われるため、会話の使用に切り替える必要があります。私はそれがかなり早く起こると想像しています。これらのタイミングおよび状態管理の問題は、Seam 会話が解決するように設計された問題です。
Session.instance().invalidate();