• 締切済み

Spring AOPについて

会員制のネットショッピングサイトを想定して模擬開発をしております。 ログインしていない方が買い物かごに商品を入れようとすると、ログインするように促す画面に遷移するように作りたいのですが、 、画面遷移がうまく出来ません。ちなみにログインしている方が買い物かごに商品を入れたときの画面遷移は出来ております。 買い物かごを管理しているコントローラ内で以下のようなsessionが無い場合の処理を加えましたがうまくいきませんでした。 returnの値を変えてもうまくいきませんでした。 if (session.getAttribute("user") == null) { return "redirect:/"; } 実行すると java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed というエラーが出てきます。 会員を管理するインターセプターを作成しており、そちらでアクセス制限をかける処理を行っております。 JoinPointは@Beforeを指定しております。Adviceを実行したいパッケージ名・クラス名・メソッド名などは指定しており、 実行対象メソッドに@RequestMappingが付与されていると処理を実行すると条件付けしています。 そこで、ログインしていない人が何らかの処理を実行しようとするとログインするように促す画面に遷移するように処理しております。 コントローラとインターセプタの処理を見直しても思うように画面遷移が出来ない際は、どのような点に着目すれば良いのでしょうか。 ご意見お待ちしております。 ※OKWAVEより補足:「Webシステム開発」についての質問です。

みんなの回答

  • coronoe
  • ベストアンサー率50% (1/2)
回答No.1

java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed ソースがないと正直お答えするのが難しいところですが、上記エラーが出ているということは、レスポンスを返した後にリダイレクトを行なっているからエラーが出ているということになります。 一度処理の流れを追ってみてはどうでしょう? リダレクトが行われる前にレスポンスがどこかで行われているはずです。 http://javatechnology.net/spring/spring-boot-eclipse-debug/

OTLkinako
質問者

お礼

お忙しい中ご回答ありがとうございました。