入力された結果に応じて下記のように画面を分岐させたいと思っています。
①入力された文字が全て正しければ、確認画面
②一つでもエラーがあれば、エラー画面
ArrayListを使ってエラー文言を保存(エラー画面で表示する)するので、『list.size()>0』で分岐を試みたのですが文字入力の結果にかかわらずエラー画面に遷移してしまいます。目的と異なりますが、if-elseの遷移ページを逆にすると文字入力の結果に関わらず確認画面に遷移してしまいます。
恐らくは条件分岐のやり方が良くないのかと推測しているのですがご教授ください。
※各メソッドは別クラスで明記
<使用ソフト>
eclipse Version: Oxygen.3a Release (4.7.3a)
Apache Tomcat/8.0.50
JAVA
1package ex; 2 3import java.io.IOException; 4import java.util.ArrayList; 5 6import javax.servlet.RequestDispatcher; 7import javax.servlet.ServletException; 8import javax.servlet.http.HttpServlet; 9import javax.servlet.http.HttpServletRequest; 10import javax.servlet.http.HttpServletResponse; 11import javax.servlet.http.HttpSession; 12 13/** 14 * ValidateServlettクラス 15 */ 16public class ValidateServlet extends HttpServlet { 17 18 protected void doPost(HttpServletRequest request, 19 HttpServletResponse response) throws ServletException, IOException { 20 21 // レスポンスの為のコンテンツタイプの設定 22 response.setContentType("text/html; charset=utf-8"); 23 // リクエストのエンコードの設定 24 request.setCharacterEncoding("utf-8"); 25 26 // セッションの取得 27 HttpSession session = request.getSession(); 28 // セッションからformBeanを取得 29 FormBean formBean = (FormBean) session.getAttribute("formBean"); 30 31 String code = request.getParameter("code"); 32 String name = request.getParameter("name"); 33 String address = request.getParameter("address"); 34 String number = request.getParameter("number"); 35 String msg = ""; 36 37 // FormBeanクラスに入力データをセット 38 formBean.setCode(code); 39 formBean.setName(name); 40 formBean.setAddress(address); 41 formBean.setNumber(number); 42 43 // formBeanをセッションにセット 44 session.setAttribute("formBean", formBean); 45 46 //ArrayListをインスタンス生成 47 ArrayList<String> list = new ArrayList<String>(); 48 49 //従業員コードの文字入力チェック 50 if (ValidateUtil.isNull(code)) { 51 msg = "従業員コードを入力してください"; 52 list.add(msg); 53 } 54 if (ValidateUtil.isHalf(code)) { 55 msg = "従業員コードは半角英数字で入力してください"; 56 list.add(msg); 57 } 58 if (ValidateUtil.isMaxLength(code, 20)) { 59 msg = "従業員コードは20文字以内に入力してください"; 60 list.add(msg); 61 } 62 63 //従業員氏名の文字チェック 64 if (ValidateUtil.isNull(name)) { 65 msg = "従業員氏名を入力してください"; 66 list.add(msg); 67 } 68 69 if (ValidateUtil.isFull(name)) { 70 msg = "従業員氏名は全角文字で入力してください"; 71 list.add(msg); 72 } 73 74 if (ValidateUtil.isMaxLength(name, 30)) { 75 msg = "従業員氏名は30文字以内に入力してください"; 76 list.add(msg); 77 } 78 79 //住所の文字チェック 80 if (ValidateUtil.isNull(address)) { 81 msg = "住所を入力してください"; 82 list.add(msg); 83 } 84 85 if (ValidateUtil.isFull(address)) { 86 msg = "住所は全角文字で入力してください"; 87 list.add(msg); 88 } 89 90 if (ValidateUtil.isMaxLength(address, 10)) { 91 msg = "住所は30文字以内に入力してください"; 92 list.add(msg); 93 } 94 95 //電話番号の文字チェック 96 if (ValidateUtil.isNull(number)) { 97 msg = "電話番号を入力してください"; 98 list.add(msg); 99 } 100 101 if (ValidateUtil.isHalfNum(number)) { 102 msg = "電話番号は半角数字で入力してください"; 103 list.add(msg); 104 } 105 106 if (ValidateUtil.isMaxLength(number, 10)) { 107 msg = "電話番号は30文字以内に入力してください"; 108 list.add(msg); 109 } 110 111 // セッションに値設定 112 session.setAttribute("list", list); 113 114 //結果に応じてページ遷移を変える 115 if (list.size() > 0) { 116 RequestDispatcher RD = request.getRequestDispatcher("/ex/error.jsp"); 117 // forwardメソッドで、処理を転送 118 RD.forward(request, response); 119 } else { 120 RequestDispatcher rd = request.getRequestDispatcher("/ex/confirm.jsp"); 121 // forwardメソッドで、処理を転送 122 rd.forward(request, response); 123 } 124 } 125}
回答1件
あなたの回答
tips
プレビュー