• ベストアンサー

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 の文字列を格納できません。

  • Java
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • 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

  • PHPのifでエラーがある場合とない場合で分岐

    phpでエラーがある場合とない場合で表示内容を変えたいです。 フォームを使ってデータベースに登録をするものです。 現状下記のコードでエラーが発生していればエラーメーッセージはきちんと表示されるのですが、エラーがない場合はphp外に記載してある戻るボタンが表示されるだけでメッセージが表示されません。 表示されないだけでデータベースへの登録は正常にできております。 下記のコードも色々と調べすぎてどこを参考にしたものか忘れてしまいました。 エラーがない場合にもちゃんと表示されるようにするにはどのように書くのが正解なのでしょうか? 調べ方が悪いのか調べても解決できるページは見つかりませんでした・・・。 よろしくお願いいたします。 【test.php】 <?php //省略 try { //省略 } catch (PDOException $e) { $errorMessage = $e->getMessage(); ?> <div class="error"><?php echo $errorMessage; ?></div> <?php if (strpos($errorMessage, "$errorMessage") !== false) { ?> <p>エラーのため登録できませんでした。</p> <?php } else { ?> <p>登録が完了しました。</p> <?php } } ?> <a href="URL">戻る</a>

    • ベストアンサー
    • PHP
  • サーブレットで入力エラー時にエラー画面の出力

    JAVAサーブレットで、わからないことがありお伺いいたします。 名前、タイトル、メッセージが入力されていないと、エラー画面になるように設定したと思っています。 ソースが3つあり、 (1)拡張子jspのソース  ここでBBSの投稿フォームおよび投稿後のフォームの呼び出し (2)拡張子javaのソース  フォームから入力された内容の取得および「bean」へ登録 (3)拡張子javaのソース  投稿内容の値の保持および取り出し となっています。 (2)に if(!isEmpty(name) && !isEmpty(subject) && !isEmpty(message) ){ // beanにフォームデータをセット があるので下記を記述しました。 }else {ServletContext sc = getServletContext(); RequestDispatcher rd = sc.getRequestDispatcher("/error.jsp"); rd.forward(request, response); } それでも、どれか一つを抜かして「投稿」ボタンを押しても、元の初期画面に戻ってしまいエラー画面が出ません。 記述の仕方がいけないのでしょうか。 宜しくお願い致します。

  • 入力チェックとエラーメッセージの表示

    Javaについて勉強している者です。 現在、エントリー(登録)画面で入力した文字の検証処理をサーバーサイドで行い、 エラーがある場合は再度ページを表示し、その際には一緒に エラーメッセージを添える処理を作成したいと考えております。 入力チェックを行うクラスを作ってみたものの、 エラーメッセージをどのように組み込めば良いかという点に悩んでおります。 まとめてみると、期待する処理の流れは次の通りです。 1、エントリー画面に入力された文字の検証処理を行う 2、エラーがある場合にはJSPを再度表示(entry.jsp) 3、再度表示した際にエラーメッセージを添える。 下記はコードの一部です。 //INSERTChecker.java //未入力チェック public boolean requiredCheck(String input){ if(input.equals("")){ return false; } return true; } //数値チェック// public boolean numberCheck(String input){ for(int i = 0; i < input.length(); i++){ if(!Character.isDigit(input.charAt(i))){ return false; } } return true; } } //Validator.java public class Validator extends HttpServlet{ public boolean validate(HttpServletRequest req) throws ServletException,IOException{ request.setCharacterEncoding("Windows-31J"); String id = req.getParameter("id"); String pass = req.getParameter("pass"); String name = req.getParameter("name"); String tel = req.getParameter("tel"); InputChecker check = new InputChecker(); //未入力事項がないかチェック check.requiredCheck(id); check.requiredCheck(pass); check.requiredCheck(name); check.requiredCheck(tel); //数字のみが入力されているかをチェック check.numberCheck(tel); return true; //Servlet else if(select != null && select.equals("エントリー")){ String id = req.getParameter("id"); String pass = req.getParameter("pass"); String name = req.getParameter("name"); String tel = req.getParameter("tel"); Bean bean=new Bean(); bean.setId(id); bean.setPass(pass); bean.setName(name); bean.setTel(tel); Entry cEntry=new Entry();//登録クラス cEntry.entry(bean); Validator vEntry=new Validator(); vEntry.validate(req); req.setAttribute("INSERT",cEntry); target = "/top.html";//登録後、topページに戻る } request辺りがキーワードになるのかな、と考え、色々調べたのですが 解決策は見つかりませんでした。 記述方法やアドバイス等御座いましたら、ご教授お願いいたします。 長文失礼いたしました。

  • ページ転送でエラー

    数時間前に【ブログへジャンプ】というタイトルで質問し、この件に関しては解決はしたのですが、 新たにページ転送の段階でエラーが出てしまい、転送できずに困っています。 エラーメッセージはこんな感じのもの C:\Documents and Settings\xxxxxxxxx\My Documents\buruna!!!\HPB_Recycled.xml これはなにが原因なのでしょうか? 以前にも転送がうまくいかずズーッと更新できずにいました。そこで今回HPを削除して新たに作成しようとしているところなのですが、、。 何が原因なのかさっぱりわからずこれからリニューするときもまたエラーが出るのでは?と少々心配しております。 できるだけわかりやすく説明していただければ幸いです。 よろしくお願いします。

  • 転送エラー

    パソコン初心者ですが、このたび、ホームページビルダー6で、ホームページを作りました。 一回目の転送はうまくいったのですが、2度目の作業で、トップページに写真を貼り付けて転送しようとしたところで、エラーが出て、うまくいきません。 ためしに他のページで写真を貼り付けて転送したところ、うまくいきました。トップページに限り、写真も文字も転送が出来ない状態です。 どうしたらいいのか、さっぱりです。ご教授のほど、よろしくお願いいたします。

  • 転送エラー

    つい、この間相談させていただいたものなんですが、また転送エラーが起きました。 ページを更新してパソコンを閉じ、更新していなかったものを思い出してまた開いたのですが転送しようとすると、突然画面が固まってしまいました。 初めてのときにもこのようなことがあり、そのときは「パッシブモードに接続する」にチェックマークをつけたら、普通に転送することが出来、その後も大丈夫だったのですが、いきなりこんなことになって何が原因なのか分かりません。 一体どうしたらいいのでしょうか?

  • 「実行しましたが、ページでエラーが発生しました」とエラーメッセージが出ます。どなたか助けてください

    ホームページを作成しましたが、 表示は一応ちゃんとされていますが IE左下に、「実行しましたが、ページでエラーが発生しました」とメッセージが出ます どなたか教えていただけないでしょうか メッセージ詳細は以下です ライン:2 文字:1 エラー:構文エラーです コード:0 URL:省略 どなたか助けてください。

  • Outlook Express 「転送」ができない

    Outlook Express で受信したメールを他者に転送しようとすると、転送ができず、下記のエラーメッセージがでます。 「受信者の一人がサーバによって拒否されました」 これが無効なメールアドレスを使っている場合のエラーメッセージということは知っていますが、アドレス帳に登録された正しいメールアドレスを使っているにもかかわらず、転送するとエラーメッセージがでて送れないのです(「転送」以外の処理をして送信した場合は正常に送れるのを確認しています)。 また、以下のことも確認しています。 ・転送による送信はエラーになってしまうので送信トレイに残ってしまう。送信トレイに残っているメールをみたところ、送信先のメールアドレスの情報が、B <****@***.***> <n@/■>という中身(<n@/■>は私の記憶の範囲内で記述している)になっており、エラーメッセージをみると、<n@/■>という文字列をメールアドレスとして認識していることがわかる。 むろん、登録されているアドレス帳には<n@/■>という文字列は存在しない。 ・転送は失敗するが、通常の送信は正常に行える。 ・OSはWindowsXP HomeのService Pack 1であり、Outlook Expressのバージョンは6.0である。

  • 「ページでエラーが発生しました」

    gooのブログの編集中に「ページでエラーが発生しました」というメッセージが出てしまい画像のアップが出来ません。 エラーの詳細として「オブジェクトを指定して下さい」とか「文字の繰り返しを表す正規表現演算子が不正です」とか「終了していない文字列型の定数です」とかその都度違うエラーメッセージが出ています。 初心者なモノで恥ずかしいことに意味がわからず正直どう対処して良いのかわかりません。 gooのページでエラーを出さないようにするにはどうすれば良いのでしょうか? 過去の質問を捜してみましたが似たようなものが探し出せず今回質問させてもらいました。

  • ビルダーでの転送が出来なくなってしまいました。

    こんにちは。最近ページを転送をしようとすると 「ファイル/****.htmlの転送中にエラーが発生しました(59194272)」と出てしまいます。 今まで普通に転送出来ていたのですが、 事情によりPCを初期化し、プロバイダを変えてから上記のエラーメッセージが出るようになりました。 念のため、転送した(エラーでしたが)ページをチェックしてみると ページが真っ白になり、何も表示されなくなりました。 つまり、何もかも消えて転送されてしまうのです。 ファイル名やアカウント名、パスワード等を何度もチェックしましたが、変わりません。 何が原因なのかわからなくて、困っています。 プロバイダを変えたのが原因なのか、PCを初期化したのが原因なのか・・・・・。(再インストールはきちんと出来ました) それとも他に何かあるのか・・・。 PCは、WinMeで、ホームページビルダー7で作っています。 ご助言どうぞよろしくお願い致します。

専門家に質問してみよう