データ未入力時のエラー処理がうまくできません

このQ&Aのポイント
  • JSPファイルでデータの入力と表示を行っていますが、データが未入力の場合のエラー処理がうまくできません。プログラム内の条件分岐を用いて、データの有無によって処理を分けていますが、正常に処理されません。代わりに「null」を使用しても同様の結果です。また、データを取得するメソッド「request.getParameter()」を使用しても同様のエラーが発生します。
  • データが未入力の際のエラー処理において、プログラム内の条件分岐や「null」の代わりに使用する方法をご教示いただけると助かります。JSPファイルでのデータの入力と表示が問題なく行われるようにしたいです。
  • 現在、JSPファイルでテキストボックスにデータを入力し、次のページでそのデータを表示させるプログラムを作成しています。ただし、データが未入力の場合のエラー処理が上手くいきません。条件分岐や「null」を使っても同じ問題が発生します。より良いエラー処理の方法や、データの取得方法をご教示いただけると助かります。
回答を見る
  • ベストアンサー

データ未入力時のエラー処理がうまくできません・・・

現在、JSPファイルを作成しています。その内容は、HTMLで表示されたテキストボックスにデータを入力し、 次のページでそのデータを表示させるものです。 データが未処理の場合のJavaのプログラムは、以下のようになります。 if(txtInpA == "") { データが未入力時のエラー処理 }else{ データが入っているときの処理   } *「txtInpA」にデータが入っています。 しかし、このプログラムだと正常に処理してくれません。 「""」の代わりに「null」としても同じです。 また、データを取得するメソッド「request.getParameter()」を使っても 同様にうまく処理をしてくれません。 なにかよい方法があればぜひ教えてください。お願い致します。

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

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

  • ベストアンサー
noname#30871
noname#30871
回答No.1

 たいていの人が一度はハマることですが、Javaでは文字列同士を「==」で比較するのは誤りです。  Stringのメソッドであるequals()やlength()を使ってください。 txtInpA.equals("") == true txtInpA.length() == 0

bokeseizin
質問者

お礼

アドバイスありがとうございました。 文字列同士を「==」で比較するのは誤りだとは知りませんでした。 とても参考になりました。さっそく今日直してみます。

関連するQ&A

  • 空欄のテキストフィールドの判定の方法

    HTMLのフォームに入力されたテキストフィールドの値より処理を変化させる ロジックを作ろうと下記のようにプログラムしました。 テキストフィールドに何か入力して送信した場合は、elseの処理を正常に行ってくれるのですが、 未入力でsubmitした場合だと、処理が止まってブラウザ上には真っ白な画面しか表示されません。 やはり判定文が悪いのでしょうか? 未入力のテキストフィールドの判定方法を教えてください。 ----------------------------------------------------- String tf1 = request.getParameter("text1"); String tf2 = request.getParameter("text2"); if((tf1 == null) || (tf2 == null)) {  HttpSession session = request.getSession();  session.setAttribute("errmessage", "未入力の項目があります。");  RequestDispatcher dispatcher     = request.getRequestDispatcher("/err.jsp");  dispatcher.forward(request, response); } else {  //テキストフィールドに何かが入力されている場合の処理 }

    • ベストアンサー
    • Java
  • 日付データのエラーチェックに関して

    最近Javaを習い始め、Eclipseを使ってサーブレット/JSPを学習している者です。使っているデータベースはOracle9iです。OSはWindowsXPです。 現在、学習しているのはJSPで表示したブラウザのフォームからデータを入力して、データベースにそのデータを登録、更新などを行う作業です。 質問は入力されたデータのエラーチェックについてなのですが、データベースに日付を西暦で2009/03/05とDATE型で登録していて、その日付をブラウザから登録、更新する際に「日付は半角で西暦/月/日と入力してください」と指定して、それ以外の入力がされた場合はエラー画面を表示したいのですが、フォームから送られてくるデータはString型でそれをSimpleDateFormatメソッドを使ってDate型に変換してtryで例外処理をしてエラー画面に画面遷移すればいいと思うのですが、サーブレット内でその処理を実行しようとするとエラーになってしまいます。 どのようにソースを書けばいいのでしょうか? JSPのフォームのソース(一部) <input type="text" name="day"> サーブレットのソース(一部) public void doGet(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { request.setCharacterEncoding("Windows-31J"); String day = request.getParameter("day"); try { ここから先が分かりません。

    • ベストアンサー
    • Java
  • JAVAでHTML数値を参照する方法

    java(JSP,サーブレット)を始めたばかりで、よくわからなく お教えねがえないでしょうか java(JSP+HTML)からjava(JSP,サーブレット)には request.getParameter()でデータを参照することは 出来たのですが、 JSP(HTML+javascript)の構成の場合 HTMLのinput文(value)とjavascript 変数を <% JSP %>の中でどのように記述したらデータを参照出来る のでしょうか

    • ベストアンサー
    • Java
  • JSPのエラー。

    以下のjspファイルでコンパイルエラーが出ます。 これはログインの処理の二つ目のjspファイルで、一つ目のファイルではhtmlのフォームで、このファイルにpostしています。 mディレクトリにuserクラスを作ってあり、loginメソッドで成功すればtrueが返ってきます。 ブラウザに表示されるエラーの一行目は org.apache.jasper.JasperException: /login2.jsp(3,27) &lt;jsp:useBean タグが終了していません と表示されます。 よろしくお願いします。 <%@page contentType="text/html;charset=Windows-31J"%> <%@page import="m.user,javax.sql.*,java.sql.*"%> <jsp:useBean class="m.user" id="user" scope="session"/> <html> <head><title>ログイン</title></head> <body> <% String strLoginName = request.getParameter("login_name");/*フォームからの受け取り*/ String strPassword = request.getParameter("password"); String strResult; boolean blResult = user.login(strLoginName,strPassword); if(blResult){ strResult = "ログインしました。"; }else{ strResult = "失敗です。"; }%> <%=strResult%> </body> </html>

    • ベストアンサー
    • Java
  • サーブレットとJSPの連携

    今、サーブレットとJSPについて勉強しまいます。 HTMLからサーブレットでリクエストを受け付け、 JSPに転送し表示させたいのですが、フォームからの入力の場合は String carname = request.getParameter("cars"); で入力データを取得するコードを書きますよね? (本ではこう書いてました・・・。) では、HTMLの入力フォームからではなくリンクからの 受付けの場合はどう書けばいいのですか? 勉強を始めたばかりで初心者なので、説明不足の点もあるかも 知れませんが分かりやすくご指導宜しくお願いします…。

  • getParameter()について

    getParameter()を使ってフォームからの送信をservletに渡し処理するプログラムを作っているのですが、うまくいきません、誰か教えていただけないでしょうか 問題となる部分は String name = getParameter("name"); if(name != null){ 処理1 }else{処理2} フォームからの入力が無い場合処理2をしたいのですが、うまくいかないのです。(入力ななくても処理1をしちゃうんです) どこが間違っているのでしょうか?教えてください。

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

    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辺りがキーワードになるのかな、と考え、色々調べたのですが 解決策は見つかりませんでした。 記述方法やアドバイス等御座いましたら、ご教授お願いいたします。 長文失礼いたしました。

  • JSP・サーブレット・HTMLについて・・・

    今、サーブレットとJSPについて勉強しています。 HTMLからサーブレットでリクエストを受け付け、 JSPに転送し表示させたいのですが、フォームからの入力の場合は String carname = request.getParameter("cars"); で入力データを取得するコードを書きますよね? (本ではこう書いてました・・・。) では、HTMLの入力フォームからではなくHTMLのリンク部分を クリックされた時の受付けの場合はどう書けばいいのですか? 勉強を始めたばかりで初心者なので、説明不足の点もあるかも 知れませんが分かりやすくご指導宜しくお願いします…。

    • ベストアンサー
    • Java
  • サーブレットでバイナリの入力データを扱いたい

    サーブレット/Java初心者です。 サーブレットで、 request.setCharacterEncoding("UTF-8"); String hoge1 =request.getParameter("hoge1"); String hoge2 =request.getParameter("hoge2"); のように、リクエストパラメータを取得しています。 hoge2だけ、UTF-8ではなく、バイナリデータとして解釈し、byte[]の変数に格納したい場合は、どうすればよいのでしょうか? APIのドキュメントを見ても、使えそうなメソッドがなくて困っています。

    • ベストアンサー
    • Java
  • サニタイジングについて

    今、JSPでサニタイジングを行うプログラムを作成しています。 ただ、JSPではなくJAVAで作りJSPに接続しようとしていますが、 一様、JSPで入力したデータをサーブレットで生成したHTMLに表示は できたのですが、HTMLを生成するのではなくJSPとJSPの間に入る フィルターとして扱いたいのですが、いまだによく分からないのです。 そこで、少し聞きたいのですが、どのようにしたらいいのか 教えてもらえませんか?プログラムはサイトで探してきたのを改造して 使っていますが、まだ、JSP、JAVAの知識が浅くよく分かりません。 教えてもらえるならさいわいです。

専門家に質問してみよう