• 締切済み

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

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

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

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.1

エラーメッセージをリクエストに格納して JSPでそれを取得すればいいわ

関連するQ&A

  • 全角スペースのチェックについて

    こんにちは。 全角スペースについてのご質問です。 ある入力項目に対して必須チェックを行っております。 下記のコードはServlet内で以下のチェックを行っております。 ---------------------------------------------------------------- String name = req.getParameter("name"); bean.setName(name); if(bean.name().trim().length() == 0 || bean.name() == null){ return NO_INPUT_ERR; } ---------------------------------------------------------------- このチェックでは半角スペース『 』であればエラーとして判断してくれますが、 全角スペース『 』ではエラーとして判断してくれません。 (全角スペースはtrim()を実行しても省いてくれないため) 全角スペース『   』の判断をする場合は、 新規にクラスを作成して文字数分繰り返しチェックを入れるような処理を 自分で作成しないとチェックは出来ないのでしょうか? ご存知の方がおりましたら、ご教授の程お願い致します。

    • ベストアンサー
    • Java
  • JAVA 入力チェックについて。

    いつもお世話になっております。 いま、コマンドラインで入力された値の入力チェックを作成しているのですが、空白値のチェックがうまくいきません。スペースのチェックはできました。 また、参考URL等ございましたら、教えていただけないでしょうか。 // 未入力チェック private boolean check1(String input){ for (int i = 0; i < input.length(); i++) { char a = input.charAt(i); if (a == ' ') { return false; } } return true; }

    • ベストアンサー
    • Java
  • checkbox の入力チェックのやり方について

    お世話になります。 フォームにて、 javascriptで、入力チェックをおこないたいと思っています。 チェックボックスについては、どれか選択が一つでもなければ、アラートで、文字を出したいと思いますが、うまくできません。 チェックボックスの入力確認の方法を教えてください。 よろしくお願いいたします。 現在作りかけのソースは、下記の通りです。 <html> <head><title>-</title></head> <body> <form method="post" action="" onsubmit="return form_Validator(this)"> <input type="text" name="a1" size="15" maxlength="12"> <BR> <input type="checkbox" name="a1001" value="1"> <input type="checkbox" name="a1002" value="1"> <input type="submit" value="登録" name="submit"> </form> <script Language="JavaScript"> <!-- function form_Validator(doc) { if ( doc.a1.value == "" ) { alert( "BAD" ); return false; } /* a1001かa1002のチェックボックスのチェックがなければアラート----*/ return (true); } //--> </script> </body> </html>

  • チェックボックスの未入力チェック

    ざっとですけれども <form action="**" name="myform" onsubmit="return Check()" method=post> <input type="checkbox" name="Erasedata" id="Erasedata" value="1" > <input type="checkbox" name="Erasedata" id="Erasedata" value="2" > ・・・ <input type="checkbox" name="Erasedata" id="Erasedata" value="5" > <input type="submit" value="選択されたものを削除する"> このようなチェックボックスがあったとして function Check() { for (i=0;i<document.myform.length;i++)  {   if(document.myform.Erasedata[i].checked==true) {return true;}  } alert("どこかにチェックを入れて下さい "); return false; } といった感じで未入力チェックをしています。 チェックボックスが複数の場合はうまく動くのですが、チェックボックスがひとつだとうまくいきません。スクリプトで何か問題があるようでしたらご指摘お願いできませんでしょうか。よろしくお願いいたします。

  • JAVAスクリプトでのFORM入力チェックの方法

    JAVAスクリプトでのFORM入力チェックの方法を教えてください。 ネットでいろいろ探してはめ込んだのですが、動作するプログラムが下記のしかありませんでした。 ラジオボタンの入力チェックとプルダウンの入力チェックを同時にしたいのですがよくわかりません。 今の状態ではラジオボタンをチェックしても未入力のアラートが出てしまいます。 あとこれにプルダウンの入力チェックをつけたいのですが… すいませんがどなたか教えてください。よろしくお願いします。 function Form_Validator(theForm) { var flag=false; var i; for(i=0; i<theForm.OPT-00-06.length; i++){ if (theForm.OPT-00-06[i].checked){ flag = true; break; } } if(!flag){ alert("\"OPT-00-06\" にチェックしてください。"); return (false); } if(confirm("入力もれはありません。")){ return (true); }else{ return (false); } <form name="form1" method="POST" action="~cgi?" onsubmit="return Form_Validator(this);"> ・ ・ <input type="radio" name="OPT-00-06" value="A"> <input type="radio" name="OPT-00-06" value="B"> ・ ・ <select name="OPT-00-07"> <option value="">選択してください</option> <option value="80">80</option> <option value="81">81</option> ・ ・ ・ <select name="OPT-00-08"> <option value="">選択してください</option> <option value="35">35cm</option> <option value="36">36cm</option> ・ ・ ・ <input type="submit" value="カートに入れる" name="submit">   <input type="reset" value="内容をクリア" name="reset"> </div> </form>

  • 入力フォーム(JSP)にDB検索条件を入力し、データがなかった場合入力した値を残したままJSPに戻る方法を教えてください。

    基本的にはタイトルの質問なんですが、具体的な書き方がわかりません。 今作成しているのが TOP画面(JSP) ・入力フォームに検索条件 ↓ Servlet ・入力された条件でDB検索  何か検索されれば次画面へ遷移  何も検索されなければTOP画面へ戻る というものですが、 public class LoginCheck1 extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); String user = request.getParameter("user"); String pass = request.getParameter("pass"); HttpSession session = request.getSession(true); boolean check = authUser(user, pass); if (check){ /* 認証済みにセット */ session.setAttribute("login", "OK"); /* 本来のアクセス先へ飛ばす */ String target = (String)session.getAttribute("target"); response.sendRedirect(target); }else{ /* 認証に失敗したら、ログイン画面に戻す */ session.setAttribute("status", "Not Auth"); response.sendRedirect("/auth/Login"); } } protected boolean authUser(String user, String pass){ /* 取りあえずユーザー名とパスワードが入力されていれば認証する */ if (user == null || user.length() == 0 || pass == null || pass.length() == 0){ return false; } return true; } } サーブレットはこんな感じで書いてるんですが、 response.sendRedirect("/auth/Login"); の部分が悪いんでしょうか?

    • ベストアンサー
    • Java
  • 入力フォーム(JSP)にDB検索条件を入力し、データがなかった場合入力した値を残したままJSPに戻る方法を教えてください。

    基本的にはタイトルの質問なんですが、具体的な書き方がわかりません。 今作成しているのが TOP画面(JSP) ・入力フォームに検索条件 ↓ Servlet ・入力された条件でDB検索  何か検索されれば次画面へ遷移  何も検索されなければTOP画面へ戻る というものですが、 public class LoginCheck1 extends HttpServlet { public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException{ response.setContentType("text/html; charset=Shift_JIS"); PrintWriter out = response.getWriter(); String user = request.getParameter("user"); String pass = request.getParameter("pass"); HttpSession session = request.getSession(true); boolean check = authUser(user, pass); if (check){ /* 認証済みにセット */ session.setAttribute("login", "OK"); /* 本来のアクセス先へ飛ばす */ String target = (String)session.getAttribute("target"); response.sendRedirect(target); }else{ /* 認証に失敗したら、ログイン画面に戻す */ session.setAttribute("status", "Not Auth"); response.sendRedirect("/auth/Login"); } } protected boolean authUser(String user, String pass){ /* 取りあえずユーザー名とパスワードが入力されていれば認証する */ if (user == null || user.length() == 0 || pass == null || pass.length() == 0){ return false; } return true; } } サーブレットはこんな感じで書いてるんですが、 期待する結果は アカウント 12345 パスワード abcde と入力してそれがDBに登録してなかった場合 アカウント 12345 パスワード abcde と入力値がそのままで戻って欲しいのですが 今は、 アカウント  パスワード     と消えて表示されます。 response.sendRedirect("/auth/Login"); の部分が悪いんでしょうか?

    • ベストアンサー
    • Java
  • テキストボックス未記入時のアラート表示 JS

    【出来ていること】 下記のように電話番号の未入をチェックしアラートを出すことができました。 <script> function check3() { tel3check = document.form3.tel3.value; data13 = tel3check; if(!data13) { alert("電話番号が未入力です13"); return; } else { document.form3.submit(); } } </script> <form method="POST" action="in.php" name = "form3"> <input type="text" name="tel3" value="" /> <input type="button" value="確認" name="sub1" onclick="check3();"> </form> 【躓いていること】 電話番号の未入だけでなく、FAXの未入もチェックしそれぞれでアラートを出そうとしましたが動きません。ご指導いただけますでしょうか? よろしくお願いいたします。 <script> function check3() { tel3check = document.form3.tel3.value; fax3check = document.form3.fax3.value; data13 = tel3check; data133 = fax3check; if(!data13) { alert("電話番号が未入力です13"); return; } elseif(!data133) { alert("FAX番号が未入力です133"); return; } else { document.form3.submit(); } } </script> <form method="POST" action="in.php" name = "form3"> <input type="text" name="tel3" value="" /> <input type="text" name="fax3" value="" /> <input type="button" value="確認" name="sub1" onclick="check3();"> </form>

  • No such validation エラー

    struts validator にて検証チェックを行いたく作成をしましたが、上記のエラーが出てしまいました。 エラーは以下のようになっています  org.apache.commons.validator.ValidatorException: No such validation method: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, javax.servlet.http.HttpServletRequest) at org.apache.commons.validator.ValidatorAction.loadValidationMethod ちなみにstrutsconfigは以下の通りとなっております。  <form-beans> <form-bean name="userRegistForm" type="blog.userRegistForm"> <form-property name="login_name" type="java.lang.String"/> <form-property name="nick_name" type="java.lang.String"/> <form-property name="email" type="java.lang.String"/> </form-bean> </form-beans> <action-mappings> <action path="/userRegist" type="blog.userRegistAction" name= "userRegistForm" input="/userRegist.jsp" scope="session" validate="true"> <forward name="success" path="/register_2.jsp" /> </action> jspの画面からlogin_name、nick_name、emailの入力欄を空欄のまま登録ボタンを押すと、userRegistFormに値がセットされた後、blog.userRegistAction.doに画面が遷移します(なにも表示されません)  また、validation.xmlは以下の通りとなっております。  ~中略~  <form-validation> <formset> <form name="userRegistForm"> <field property="login_name" depends="required"> <msg name="required" key="errors.empty" /> <arg name="required" key="string.login_name" position="0"/> </field> <field property="nick_name" depends="required"> <msg name="required" key="errors.empty"/> <arg name="required" key="string.nick_name" position="0"/> </field> <field property="email" depends="required,email"> <msg name="required" key="errors.empty"/> <arg name="required" key="string.email" position="0"/> <msg name="email" key="errors.email"/> <arg name="email" key="item.id" position="0"/> </field> </form> </formset> </form-validation>  また、userRegistFormは以下の通りとなっております。  private String login_name; private String nick_name; private String email; public userRegistForm() { login_name=null; nick_name=null; email=null; } public String getLogin_name() { return login_name; } public void setLogin_name(String loginName) { login_name = loginName; } public String getNick_name() { return nick_name; } public void setNick_name(String nickName) { nick_name = nickName; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; となっておりますが、エラーの原因がよくわかりません。 ご教授の程よろしくお願い申し上げます。

  • チェックボックスの入力チェック

    JSPでJavaScript使用しています。 no.logからテキスト(1~80までの数値がランダムに書いてある)を読みこんで、その数字でチェックボックスを作り、チェックの付いている番号を違うJSPに飛ばしています。この時どこもチェックされて無ければメッセージを表示したいのですがうまくいきません。 チェックが付いているのに、チェックされていないと認識され、メッセージが表示されてしまいます。5行目のif文が問題だと思うのですが、どうすればいいのかわかりません。アドバイス下さい。宜しく御願いします。 <script language="JavaScript"> <!-- function check(){ no = document.form1.no.value; if(no == null){ alert("チェックしてください"); return false; } } //--> </script> <form name="form1" method="post" action="test2.jsp" onSubmit="return check()"> <% String str = null; int tmpn = 0; int count = 0; BufferedReader br2 = new BufferedReader(new FileReader(getServletContext().getRealPath("/WEB-INF/no.log"))); while((str = br2.readLine()) != null) { tmpn = Integer.parseInt(str); count++; if(tmpn >= 1 && tmpn <= 9){ %> <input type="checkbox" name="no" value="<%= String.valueOf(tmpn) %>">0<%= tmpn %> <% }else{ %> <input type="checkbox" name="no" value="<%= String.valueOf(tmpn) %>"><%= tmpn %> <% if(count == 10){ out.print("<br>"); count = 0; } } } %> <input type="submit" value="送信">

専門家に質問してみよう