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

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

詳細はこちら
JSP

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

servlet

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

Q&A

解決済

1回答

1004閲覧

セレクトメニューとテキストを結合してDBに登録したい

K_3578

総合スコア1282

JSP

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

servlet

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

0グッド

0クリップ

投稿2021/01/21 06:40

編集2021/01/21 07:42

前提・実現したいこと

jspで出発地と目的地を入力するためのフォームを作成しています。

セレクトメニューで都道府県を
テキストで市区町を入力という形にしようと思っているのですが、セレクトメニューの内容のみがDBに送信されてしまいます。
方法を調べて試してみたのですがうまくいかなかったのでどうかアドバイスを頂きたいです。

発生している問題

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 5<form method="GET" action = "DispatchCreateServlet.java"> 6 7 8<label for="m_wholesale_area">出発地                時刻</label> 9 <br /> 10<select name="mw_select"> 11<option value="選択してください" >都道府県</option> 12<option value="東京都">東京都</option> 13<option value="大阪府">大阪府</option> 14<option value="愛知県">愛知県</option> 15<option value="埼玉県">埼玉県</option> 16<option value="神奈川県">神奈川県</option> 17<option value="静岡県">静岡県</option> 18<option value="北海道">北海道</option> 19<option value="青森県">青森県</option> 20<option value="岩手県">岩手県</option> 21<option value="宮城県">宮城県</option> 22<option value="秋田県">秋田県</option> 23<option value="山形県">山形県</option> 24<option value="福島県">福島県</option> 25<option value="茨城県">茨城県</option> 26<option value="栃木県">栃木県</option> 27<option value="群馬県">群馬県</option> 28<option value="千葉県">千葉県</option> 29<option value="新潟県">新潟県</option> 30<option value="富山県">富山県</option> 31<option value="石川県">石川県</option> 32<option value="福井県">福井県</option> 33<option value="山梨県">山梨県</option> 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<option value="鳥取県">鳥取県</option> 43<option value="島根県">島根県</option> 44<option value="岡山県">岡山県</option> 45<option value="広島県">広島県</option> 46<option value="山口県">山口県</option> 47<option value="徳島県">徳島県</option> 48<option value="香川県">香川県</option> 49<option value="愛媛県">愛媛県</option> 50<option value="高知県">高知県</option> 51<option value="福岡県">福岡県</option> 52<option value="佐賀県">佐賀県</option> 53<option value="長崎県">長崎県</option> 54<option value="熊本県">熊本県</option> 55<option value="大分県">大分県</option> 56<option value="宮崎県">宮崎県</option> 57<option value="鹿児島県">鹿児島県</option> 58<option value="沖縄県">沖縄県</option> 59</select> 60 <input type="text" name="mw_text"placeholder="市町村" value="${Trucks.m_wholesale_area}"/> 61(中略) 62input type="hidden" name="_token" value="${_token}" /> 63<button type="submit">登録</button> 64</form>

###追記
質問投稿時に記述していたjsのコードは理解出来ていないものだったため、元々書いていたコードに戻しました。

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

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

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

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

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

m.ts10806

2021/01/21 07:00

>セレクトメニューの内容のみがDBに送信されてしまいます。 htmlだけが問題ということでしょうか。 「絶対にコントローラや登録のプロセスには間違いがない」という自信がおありなら良いのですけど、他人にその自信が伝わる内容にはなっていないと思うのですが
m.ts10806

2021/01/21 07:01

あと、JavaScriptで定義されたmw_area(f)が謎。
K_3578

2021/01/21 07:14

m.ts10806様、コメントありがとうございます。 >htmlだけが問題ということでしょうか。 自分がそもそもセレクトメニューとテキストを結合するやり方を知らなかったので そこが問題なのかと思ってjspのコードを記載させて頂いた次第です。 >あと、JavaScriptで定義されたmw_area(f)が謎。 これは調べていたときにjsを使った方法があったのでそれを参考にしたのですが、 当方jsは疎いのでおかしいことになってるかどうかの判断がつきませんでした。
m.ts10806

2021/01/21 07:26

送信してサーバー側で受け取ってしまえばあとは文字列の扱いの問題ですよね。htmlのformも単にリクエストを送信するだけの道具に過ぎない。 しかし、結合したあと、取得-表示時に困りませんかね。 データ設計がおかしくならないかは気にしてください。 >判断がつきませんでした 判断つかないものをそのまま使うのは無駄ですし危険です。JavaScriptはWebをやりたければほぼ必須なので、覚えてください。
68user

2021/01/21 07:31

そもそも結合の意味がわからないのですが、次ページにどういうパラメータを送りたいのですか? ・DispatchCreateServlet.java?mw_select=東京都&mw_text=なんとか市なんとか町DispatchCreateServlet.java?m_wholesale_area=東京都なんとか市なんとか町 どちらでしょうか。 そして現状ではどのようなパラメータが送られているんでしょうか。
K_3578

2021/01/21 07:35

m.ts10806様 >判断つかないものをそのまま使うのは無駄ですし危険です。JavaScriptはWebをやりたければほぼ必須なので、覚えてください。 ありがとうございます。jsも勉強しつつ進めたいと思います。
K_3578

2021/01/21 07:50

68user様、コメントありがとうございます。 >そもそも結合の意味がわからないのですが、次ページにどういうパラメータを送りたいのですか? 送りたいのは DispatchCreateServlet.java?m_wholesale_area=東京都なんとか市なんとか町 の方です。 現状はjspにて <input type="text" name="mw_text"placeholder="市町村" value="${Trucks.m_wholesale_area}"/> として、 String m_wholesale_area = request.getParameter("m_wholesale_area"); としています。
68user

2021/01/21 07:58

↑の状態だと DispatchCreateServlet.java?mw_select=東京都&mw_text=なんとか市なんとか町 として送られていますよね? m.ts10806 さんのおっしゃるとおり、サーバ側で結合した方がよいとは思いますがそれができない事情があるなら…今見れないので確認できませんが、先ほどの Javascript でおおむねよいような気がします。 気になったのは「disabled にしたあとに value って取れるんだっけ? disabled = true を一旦外してみては」くらいです。
K_3578

2021/01/21 08:11

68user様 申し訳ありません、こちらでもServlet側のコードを書き換えていなかったりなど質問以前の部分がありましたのでそちらを修正してきます。 >サーバ側で結合 MySQLを使っているのですが、セレクトメニューとテキストを個別に送信して そちらで結合する、ということでしょうか?
68user

2021/01/21 08:22

続きは回答として記載いたしました。
guest

回答1

0

ベストアンサー

MySQLを使っているのですが、セレクトメニューとテキストを個別に送信して
そちらで結合する、ということでしょうか?

少なくとも MySQL では都道府県市区町村カラムが一つしかなく、ここは変えられない
という前提で書きますが、

HTML/Javascript->Servlet?->MySQL

という流れにおいて、

HTML/Javascript で結合するなら、さきほど提示いただいた Javascript 的なものになるでしょう。

もし Servlet で結合するなら、

Java

1String mw_select = request.getParameter("mw_select"); 2String mw_text = request.getParameter("mw_text"); 3String m_wholesale_area = mw_select + mw_text;

のような感じになると思います。

どっちでもいいと思いますが、Javascript をよくわかっていないのなら、Servlet 等で結合すればどうですかということです。

投稿2021/01/21 08:21

68user

総合スコア2022

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

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

K_3578

2021/01/21 08:29

回答ありがとうございます。 一度やってみます。
K_3578

2021/01/22 01:21

やってみたところ期待した結果が得られました。 改めてありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問