• ベストアンサー

Servletでのエラーページへの転送方法について

ServletでDBにアップロードするページをつくろうとしてます。そこで、登録フォームの入力チェックをし、エラーがあればエラーページに転送したいのですがうまくいきません。 下記がプログラムの一部なのですが、 ------------------ (省略) name = req.getParameter("NAME"); // 文字列の長さのチェック(入力文字にエラーがあればエラー文字列を追加) errorMessage += エラーチェックメソッド(name); // エラーメッセージが設定されていたら if(!errorMessage.equals("")) { // request オブジェクトにエラーメッセージを設定 req.setAttribute("error_message", errorMessage); ServletContext sc = getServletContext(); //エラーページへ転送 RequestDispatcher rd = sc.getRequestDispatcher("エラーページURL"); rd.forward(req,res); } } name = new String(name.getBytes("8859_1"),"SJIS"); //登録処理 (省略) -------------------- 登録フォームで無記入で登録して、エラーを発生させてると下記の様なエラーが発生してうまくエラーページに転送ができません。 どの様にエラーページに転送すればいいのかわからず、困ってます。 どのたか、ご教授頂けないでしょうか?よろしくお願いいたします。 -------------------------- エラー内容 'NAME' には、長さ 0 の文字列を格納できません。

質問者が選んだベストアンサー

  • ベストアンサー
  • bo-ken
  • ベストアンサー率42% (3/7)
回答No.2

もう少し詳しいソースコードがあればわかると思うのですが、 >name = req.getParameter("NAME"); こんなこと聞くのは失礼ですが画面にNAMEフィールドはありますよね? >errorMessage += エラーチェックメソッド(name); errorMessage は最初に初期化されていますか?(String errorMessage="";等) エラーチェックメソッドは正常であれば""を返すのですか? >rd.forward(req,res); この後にreturn文は入れておいたほうが無難ですね。 転送処理自体は問題ないと思うので、pinky23さんと同じ意見で エラーチェックメソッドの方に問題があるように思えます。

bushikun
質問者

お礼

bo-kenさん アドバイスありがとうございました。 無事に解決することができました。 転送先URLを絶対パスを相対パスに変更することで、うまくエラーページを表示することができました。 転送方法に、問題ないことが確認できて助かりました。 ありがとうございました。

その他の回答 (1)

  • pinky23
  • ベストアンサー率40% (2/5)
回答No.1

全然自信はないのですが…。 // エラーメッセージが設定されていたら if(!errorMessage.equals("")) { } このif文の中の処理には入っていますか? 入っていないのなら、エラーチェックメソッドのほうに 問題があるとは考えられませんか?

bushikun
質問者

お礼

pinky23さん アドバイスありがとうございます。 無事、解決することができました。 転送先URLを絶対パスから相対パスにすることが解決できました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう