実は、JBoss Tools使わずにSeamアプリケーションを作っていたので、ページ制御は結構いい加減。
すでにログイン済みの場合にログイン画面を表示しようとしたら、指定した画面にリダイレクトする、っていう簡単な定義をするのにも四苦八苦…。
というわけで、困ったらSeamのサンプルプロジェクトを見る。ホテル予約サンプルの中で、「ログインしてる時に、直接/home.xhtmlに行ったら/main.xhtmlにリダイレクトする」処理を参考にする。
<page view-id="/home.xhtml" action="#{identity.isLoggedIn(false)}"> <navigation from-action="#{identity.isLoggedIn}"> <rule if-outcome="true"> <redirect view-id="/main.xhtml"/> </rule> </navigation> <navigation> <rule if="#{identity.loggedIn}"> <redirect view-id="/main.xhtml"/> </rule> </navigation> </page>
ページアクションでidentity.isLoggedInアクションを呼んで、すでにログイン済みかどうかをチェックしているのがポイントかな。
自分で書くコードはauthenticator#authenticate()なんで、isLoggedInアクションの存在はあまり気づかない…。