- - PR -
WebLogicWorkshopでエラーページへの遷移
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2004-05-19 19:44
現在 WebLogicWorkshopで開発をしている者です。
ポートレット内でエラーが発生した場合エラーページに遷移をさせたいのですが、以下のようにコーディングすると 全ての処理が終了した後、ページが遷移します。 <render:pageUrl var="error" pageLabel="test" /> <% try{ 正常処理 }catch(Exception e){ String target_location = request.getParameter("error.jsp"); String PageName,pageUrl,errorPage; pageUrl = null; pageUrl = error; errorPage= request.getScheme() + "://" + request.getServerName() + ":" + request.getServerPort() + request.getContextPath() + "/error.jsp" ; response.sendRedirect(errorPage); } 以降の処理 %> と記述するとエラーでcatchに入ってきた後、response.sendRedirect(errorPage);でページ遷移をせず、以降の処理が全て終了した後に、エラーページに遷移してしまいます。 catchに入ってきた段階でページを遷移させるにはどのようにコーディングしたらよいのでしょうか? 初歩的な質問で申し訳ありませんが、ご教授下さい。 よろしくお願いします。 |
|
投稿日時: 2004-05-20 15:01
catch ブロックの後にさらに処理をかいてしまったら例外が発生してもしなくても処理されてしまいますね。
catch せずにGlobal.app の例外ハンドラに記述するべきではないでしょうか。 詳しくはWorkshop のヘルプをご覧ください。 [Webアプリケーションを開発する->ページフロー構築ガイド->ページフローの例外を処理する] わからなければサポートに問い合わせましょう。 [ メッセージ編集済み 編集者: インギ 編集日時 2004-05-20 15:03 ] |
|
投稿日時: 2004-05-20 16:00
お返事ありがとうございます。
私の書き方が悪かったのですが、今 不明な点というのはページ遷移のタイミングです。 catchの中で response.sendRedirect(errorPage); 処理を行っているのですが、その処理が発行されたタイミングでページ遷移がされるのではないのでしょうか? 今現在はsendRedirectを発行したタイミングではなく、ソースで言う所の「以降の処理」が終了してから、ページ遷移が行われるのです。 ページ遷移処理を発行した時点でページ遷移を行えるようにしたいのです。 |
|
投稿日時: 2004-05-20 17:22
response.sendRedirect() が実際にどのように処理されるかはご存じですか?
リダイレクトは一旦ブラウザにレスポンスを返してから、再度リクエストを行うことで実現します。 また、リダイレクトを行って欲しい旨のレスポンスはレスポンス内容がコミットされてからでないとブラウザへは送信されませんので、御指摘の通り JSP は最後まで処理されることになります。 [ メッセージ編集済み 編集者: インギ 編集日時 2004-05-20 17:22 ] |
|
投稿日時: 2004-05-20 17:31
そうですか。。。
私の不勉強のために申し訳ありませんでした。 出来れば、catchに入ってきた段階でページを遷移させるようなコーディング方法をご教授いただけないでしょうか? もし 参考になるようなページがありましたら、お教え下さい。 よろしくお願いいたします。 |
|
投稿日時: 2004-05-20 17:33
そうですか。。。
私の不勉強のために申し訳ありませんでした。 それは 例外処理だけにいえることではないので 出来れば、コードを発行した段階でページを遷移させるようなコーディング方法をご教授いただけないでしょうか? もし 参考になるようなページがありましたら、お教え下さい。 よろしくお願いいたします。 |
|
投稿日時: 2004-05-20 17:36
>私の不勉強のために申し訳ありませんでした。
いえいえ。サーブレットの仕組みがわからないとちょっと取っつきにくいところですよね。 JSPやサーブレットではき出している HTML は直接ブラウザにおくられているのではなく、内容が確定するまでバッファしてから送信されるからです。 >もし 参考になるようなページがありましたら、お教え下さい。 最初に紹介した、Global.app の例外ハンドラを記述する方法です。 |
|
投稿日時: 2004-05-20 17:44
重ね重ねありがとうございました。
ご紹介いただいたやり方で試してみたいと思います。 |
1
