🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

Q&A

解決済

1回答

1292閲覧

バリデーションにおいて値を入力しているのに入力していない物とみなされ、エラーが発生する

K_3578

総合スコア1282

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

servlet

Servletとは、Webページの動的な生成やデータ処理などをサーバ上で実行するために、Javaで作成されたプログラムです。 ショッピングサイトやオンラインバンキングといった、動的なウェブサイトの構築に用いられています。

0グッド

0クリップ

投稿2021/01/16 02:15

前提・実現したいこと

バリデーションの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

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Trucks t = new Trucks();

newしたオブジェクトをただ渡すだけだと
そのオブジェクトが持っているフィールドの値は何もしてなければnullですね。

現状だと

t.setTask_date(task_date);

ここしか値をセットしてる場所がありません。

DispatchValidator.validate()では

String stack_area_error = _validateTitle(d.getStack_area());

をチェックしようとしてますね。

投稿2021/01/16 02:25

m.ts10806

総合スコア80875

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

K_3578

2021/01/16 02:36

分かりやすい回答ありがとうございます。 おかげでエラーが出ないようにすることが出来ました!
m.ts10806

2021/01/16 02:42

というより、デバッグされたら良いのでは。 デバッグを覚えないことにはまともにプログラミングできるようにはなりませんし、自己解決能力も育ちません。
K_3578

2021/01/16 02:56

デバッグそのものを知らなかったのでこの機会に覚えようと思います。 ご忠告ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問