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

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

詳細はこちら
JSP

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

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

Q&A

解決済

1回答

748閲覧

プルダウンとテキストを同じtableの同じセルに送信したい

K_3578

総合スコア1282

JSP

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

Java

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

サーブレット

サーブレット(Servlets)とはウェブやアプリケーションサーバー上に動くプログラムのことであり、ウェブブラウザや他のHTTPクライエントとデータベースやHTTPサーバー上のアプリケーションの中間層としての働きをします。

0グッド

0クリップ

投稿2021/01/15 05:22

編集2021/01/15 08:28

前提・実現したいこと

複数のプルダウンとテキストをformでサーブレットに送信して、
それぞれtableに送信したいです。
下記の方法で実行してみたのですが、textの値しか送信されなかったのでどうか知識をお貸し頂きたいです。

試したこと

_form.jsp

JSP

1<c:if test="${errors != null}"> 2 <div id="flush_error"> 3 入力内容にエラーがあります。<br /> 4 <c:forEach var="error" items="${errors}"> 5 ・<c:out value="${error}" /><br /> 6 </c:forEach> 7 8 </div> 9</c:if> 10 11<form method="GET" action = "サーブレット名"> 12<select name="メニュー1"> 13<option value="選択肢1">選択肢1</option> 14<option value="選択肢2">選択肢2</option> 15<option value="選択肢3">選択肢3</option> 16</select> 17<input type="text" name="プルダウン1"  value="${Dammy.プルダウン1}" <!--textとプルダウンの内容が両方同じ位置に送られるようにしたい--> 18 19<select name="メニュー1"> 20<option value="選択肢1">選択肢1</option> 21<option value="選択肢2">選択肢2</option> 22<option value="選択肢3">選択肢3</option> 23</select> 24<input type="text" name="プルダウン2" value="${Dammy.プルダウン2}" 25 26<input type="hidden" name="_token" value="${_token}" /> 27<button type="submit">投稿</button> 28</form> 29

DammyCreateServlet.java

java

1 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 2 String _token = (String)request.getParameter("_token"); 3 if(_token != null && _token.equals(request.getSession().getId())) { 4 EntityManager em = DBUtil.createEntityManager(); 5       6       クラス名 k = new クラス名(); 7        8       k.setプルダウン1(request.getParameter("プルダウン1")); 9 k.setプルダウン2(request.getParameter("プルダウン2")); 10   11        List<String> errors = DammyValidator.validate(t); 12 if(errors.size() > 0) { 13 em.close();  14  15       RequestDispatcher rd = request.getRequestDispatcher("/WEB-INF/views/dammy/new.jsp"); 16 rd.forward(request, response); 17 } else { 18 em.getTransaction().begin(); 19 em.persist(t); 20 em.getTransaction().commit(); 21 em.close(); 22 request.getSession().setAttribute("flush", "登録が完了しました。"); 23 24 response.sendRedirect(request.getContextPath() + "/dammy/index"); 25 }

DammyValidator.java

package models.validators; import java.util.ArrayList; import java.util.List; import models.クラス名; public class DammyValidator { public static List<String> validate(クラス名 k) { List<String> errors = new ArrayList<String>(); String プルダウン1_error = _validateTitle(d.getプルダウン1()); if(!プルダウン1_error.equals("")) { errors.add(プルダウン1_error); } return errors; } private static String _validateTitle(String プルダウン1) { if(プルダウン1 == null || プルダウン1.equals("")) { return "エラーメッセージ"; } return ""; } }

new.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<c:import url="/WEB-INF/views/layout/app.jsp"> 4 <c:param name="content"> 5 <h2>新規登録ページ</h2> 6 7 <form method="POST" action="<c:url value='/dammy/create' />"> 8 <c:import url="_form.jsp" /> 9 </form> 10 11 <p><a href="<c:url value='/dammy/index' />">一覧に戻る</a></p> 12 </c:param> 13</c:import>

補足情報(FW/ツールのバージョンなど)

Eclipse 4.6Neon、MySQL

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

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

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

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

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

m.ts10806

2021/01/15 05:24

jspはコピペで提示されたのでしょうか。 一部HTMLとして正しくないようですが。
K_3578

2021/01/15 05:33 編集

すいません、内容などが公的に触れていいものでないので一部内容を切り替えているので おかしい部分があったらご指摘頂けると幸いです。 _form.jspの方は省略して記載しています。
m.ts10806

2021/01/15 05:30

↓ <input type="text" value="${値2}" <input type="hidden" name="_token" value="${_token}" /> --------------------- それなら、ひとまず「同じような挙動を再現できるミニマムコード」を改めて組みなおした方が良いでしょうね。
K_3578

2021/01/15 05:39

ご指摘ありがとうございます。 改めてサンプルコードを書き直させて頂きます。
guest

回答1

0

ベストアンサー

特に問題はなさそうですので、確認の方法が間違っている可能性があります。
以下のように値を取得してもダメでしょうか。

java

1String selectVal1 = request.getParameter("プルダウン1"); // name属性の値をキーとして取得

投稿2021/01/15 05:48

plasticgrammer

総合スコア629

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

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

K_3578

2021/01/15 06:04

回答ありがとうございます。無知で申し訳ないのですが、 selectval1はこちらで変数名を切り替えればよろしいということでしょうか。
plasticgrammer

2021/01/15 06:26

変数名は自由に改変してください。 「request.getParameterの引数」と「画面側入力要素のname属性値」が一致していれば、送信された値が取得できるはずです。
K_3578

2021/01/15 08:02 編集

申し訳ありません、省略していた部分で、バリデーションを実行する機能の箇所が抜けていました。 回答頂いた通りにコードを書き直して見たところ、内容が入力されているのにエラーと判定されていますので 内容を追加致しましたのでもう少しお力添え頂きたいです。
plasticgrammer

2021/01/15 08:04

「一部内容を切り替えている」とのことですので、どこまで記載内容を信じて良いのかわかりませんが、気になる点をコメントしておきます。 - 画面のtext項目2つにname属性がない - Java側で値を取得する処理で、request.getParameter("値1")としているが、"値1"ではなくname属性の値とすべき(先頭のselectの値を取得するなら”プルダウン1”)
K_3578

2021/01/15 08:09

ご指摘ありがとうございます。 ご指摘頂いた内容に関しては既に修正させて頂いていたものなのですがこちらに反映するのを失念して おりました。分かりにくくて申し訳ありませんでした。
plasticgrammer

2021/01/15 08:17

度々すみません。 textとselectが同じname属性「プルダウン1」となっていますが、誤りでしょうか。 また、DammyValidatorも修正が反映されていないようですので対応をお願いします。
K_3578

2021/01/15 08:29

何度もミスしていて申し訳ないです。 修正、反映致しました。
plasticgrammer

2021/01/15 09:08

状況を整理させてください。 現状は画面のtextに値を入力しているのに、request.getParameter("プルダウン1")で値が取得できずエラーとなっているという状況でしょうか。
K_3578

2021/01/15 09:11

値がnullでないかを判定してエラーを出すDammyValidatorによって 判定する値の箇所を入力しているのに入力していない、nullと判定されエラーが出ている、という状況です。
plasticgrammer

2021/01/15 11:29

質問の回答としては はい/いいえ だとどちらなのでしょうか? 状況を記載し直しているということは、私の理解は間違っているのでしょうか?
K_3578

2021/01/16 01:34 編集

返信が遅れて申し訳ありません。 回答としては「はい」になると思います。 --------------------- 質問などが伸びすぎてるので最初の問題は解消できたので一応この質問は閉じさせて頂いて、 改めていま分からないところを質問させて頂きたいと思います。ご協力ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問