前提・実現したいこと
バリデーションのnullチェックに引っかからずにtableに情報を送信したい。
現在は値を入力してもnullと判定される
該当のソースコード
DispatchValidator.java
Java
1package models.validators; 2 3import java.util.ArrayList; 4import java.util.List; 5 6import models.Trucks; 7 8public class DispatchValidator { 9 public static List<String> validate(Trucks d) { 10 List<String> errors = new ArrayList<String>(); 11 12 String stack_area_error = _validateTitle(d.getStack_area()); 13 if(!stack_area_error.equals("")) { 14 errors.add(stack_area_error); 15 } 16 17 return errors; 18 } 19 20 private static String _validateTitle(String stack_area) { 21 if(stack_area == null || stack_area.equals("")) { 22 return "市町村を入力してください。"; 23 } 24 25 return ""; 26 } 27 28} 29
DispatchCreateServlet.java
java
1package controllers.dispatch; 2 3import java.io.IOException; 4import java.sql.Date; 5import java.util.List; 6import javax.persistence.EntityManager; 7import javax.servlet.RequestDispatcher; 8import javax.servlet.ServletException; 9import javax.servlet.annotation.WebServlet; 10import javax.servlet.http.HttpServlet; 11import javax.servlet.http.HttpServletRequest; 12import javax.servlet.http.HttpServletResponse; 13import models.Trucks; 14import models.validators.DispatchValidator; 15import utils.DBUtil; 16 17/** 18 * Servlet implementation class ReportsCreateServlet 19 */ 20@WebServlet("/dispatch/create") 21public class DispatchCreateServlet extends HttpServlet { 22 private static final long serialVersionUID = 1L; 23 24 /** 25 * @see HttpServlet#HttpServlet() 26 */ 27 public DispatchCreateServlet() { 28 super(); 29 } 30 31 /** 32 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 33 */ 34 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 35 String _token = (String)request.getParameter("_token"); 36 if(_token != null && _token.equals(request.getSession().getId())) { 37 EntityManager em = DBUtil.createEntityManager(); 38 39 Trucks t = new Trucks(); 40 41 Date task_date = new Date(System.currentTimeMillis()); 42 String rd_str = request.getParameter("task_date"); 43 if(rd_str != null && !rd_str.equals("")) { 44 task_date = Date.valueOf(request.getParameter("task_date")); 45 } 46 t.setTask_date(task_date); 47 48 String truck_code = request.getParameter("truck_code"); 49 String stack_area = request.getParameter("stack_area"); 50 String wholesale_area = request.getParameter("wholesale_area"); 51 52 53 List<String> errors = DispatchValidator.validate(t); 54 if(errors.size() > 0) { 55 em.close(); 56 57 request.setAttribute("_token", request.getSession().getId()); 58 request.setAttribute("truck_code", truck_code); 59 request.setAttribute("stack_area", stack_area); 60 request.setAttribute("wholesale_area", wholesale_area); 61 request.setAttribute("errors", errors); 62 63 RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/dispatch/new.jsp"); 64 rd.forward(request, response); 65 } else { 66 em.getTransaction().begin(); 67 em.persist(t); 68 em.getTransaction().commit(); 69 em.close(); 70 request.getSession().setAttribute("flush", "登録が完了しました。"); 71 72 response.sendRedirect(request.getContextPath() + "/dispatch/index"); 73 } 74 } 75 } 76 77}
_form.jsp
JSP
1<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 2<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 3<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> 4<c:if test="${errors != null}"> 5 <div id="flush_error"> 6 入力内容にエラーがあります。<br /> 7 <c:forEach var="error" items="${errors}"> 8 ・<c:out value="${error}" /><br /> 9 </c:forEach> 10 11 </div> 12</c:if> 13<form method="GET" action = "DispatchServlet.java"> 14<p> 15 <label for="task_date">日付</label> 16 <br /> 17<input type="date" name="task_date" value="<fmt:formatDate value='${Dispatch.task_date}' pattern='yyyy年MM月dd日(E)' />" /> 18 19 20<br /><br /> 21</p> 22<p> 23<label><input type="radio" name="tasktype" value="today">昼</label> 24<label><input type="radio" name="tasktype" value="evening">夜</label> 25<br /> 26 27 28</p> 29<p> 30 31 32<label for="stack_area">出発点 時刻</label><br /> 33<select name="stack_area"> 34<option value="選択してください" >都道府県</option> 35<option value="東京都">東京都</option> 36<option value="大阪府">大阪府</option> 37<option value="愛知県">愛知県</option> 38<option value="埼玉県">埼玉県</option> 39<option value="神奈川県">神奈川県</option> 40<option value="静岡県">静岡県</option> 41<option value="福岡県">福岡県</option> 42</select><!--textとプルダウンの内容が両方同じ位置に送られるようにしたい--> 43 44 <input type="text" name="stack_area"placeholder="市町村" value="${Dispatch.stack_area}" /> 45 <select name="sa_time"> 46 <option value="00">0時</option> 47 <option value="01">1時</option> 48 <option value="02">2時</option> 49 <option value="03">3時</option> 50 <option value="04">4時</option> 51 <option value="05">5時</option> 52 <option value="06">6時</option> 53 <option value="07">7時</option> 54 <option value="08">8時</option> 55 <option value="09">9時</option> 56 <option value="10">10時</option> 57 <option value="11">11時</option> 58 <option value="12">12時</option> 59 <option value="13">13時</option> 60 <option value="14">14時</option> 61 <option value="15">15時</option> 62 <option value="16">16時</option> 63 <option value="17">17時</option> 64 <option value="18">18時</option> 65 <option value="19">19時</option> 66 <option value="20">20時</option> 67 <option value="21">21時</option> 68 <option value="22">22時</option> 69 <option value="23">23時</option> 70 <option value="午前">午前</option> 71 <option value="午後">午後</option> 72 <option value="問わず">問わず</option> 73 </select> 74<p> 75</p> 76 <label for="wholesale_area">到着点 時刻</label> 77 <br /> 78<select name="wholesale_area"> 79<option value="選択してください" >都道府県</option> 80<option value="東京都">東京都</option> 81<option value="大阪府">大阪府</option> 82<option value="愛知県">愛知県</option> 83<option value="埼玉県">埼玉県</option> 84<option value="神奈川県">神奈川県</option> 85<option value="静岡県">静岡県</option> 86<option value="福岡県">福岡県</option> 87</select> 88 <input type="text" name="wholesale_area"placeholder="市町村" value="${Dispatch.wholesale_area}"/> 89 <select name="wa_time"> 90 <option value="00">0時</option> 91 <option value="01">1時</option> 92 <option value="02">2時</option> 93 <option value="03">3時</option> 94 <option value="04">4時</option> 95 <option value="05">5時</option> 96 <option value="06">6時</option> 97 <option value="07">7時</option> 98 <option value="08">8時</option> 99 <option value="09">9時</option> 100 <option value="10">10時</option> 101 <option value="11">11時</option> 102 <option value="12">12時</option> 103 <option value="13">13時</option> 104 <option value="14">14時</option> 105 <option value="15">15時</option> 106 <option value="16">16時</option> 107 <option value="17">17時</option> 108 <option value="18">18時</option> 109 <option value="19">19時</option> 110 <option value="20">20時</option> 111 <option value="21">21時</option> 112 <option value="22">22時</option> 113 <option value="23">23時</option> 114 <option value="午前">午前</option> 115 <option value="午後">午後</option> 116 <option value="問わず">問わず</option> 117 </select> 118 119 <label for="office_name">拠点名</label> 120<select name="office_name"> 121<option value="選択してください" >選択</option> 122<option value="西日本">西日本</option> 123<option value="名古屋">名古屋</option> 124<option value="博多">博多</option> 125<option value="小田原">小田原</option> 126<option value="埼玉">埼玉</option> 127<option value="静岡">静岡</option> 128</select> 129 130<br> 131<input type="hidden" name="_token" value="${_token}" /> 132<button type="submit">投稿</button> 133</form> 134
補足情報(FW/ツールのバージョンなど)
Eclipse4.6Neon、MySQL
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/16 02:36
2021/01/16 02:42
2021/01/16 02:56