質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.50%
Java

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

servlet

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

12103閲覧

htmlで作成したボタンの値がServletに引き継げない

y_matsumoto

総合スコア13

Java

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

servlet

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

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2017/06/20 10:49

###前提・実現したいこと

Htmlで作成したボタンの値をServletに引き継ぐ方法を探しています。
申し訳ありませんが、分かる方教えていただきたく思います。

###発生している問題・エラーメッセージ
画面からsubmitした値を確認したらnullになってしまいます。

###該当のソースコード

html

1<form id="add-form" 2 th:action="@{${@environment.getProperty('url.members.tested-readtext')}}" 3 th:object="${SampleDbForm}" method="post"> 4 <input type="text" id="hello" name="hello" value="たこやき" /> 5 <button type="submit" name="hoge" value="select">検索</button> 6</form> 7 8//以下javaのソース 9@RequestMapping(value = "${url.members.tested-readtext}", method = RequestMethod.POST) 10public String chkMail(@ModelAttribute @Valid SampleDbForm form, 11BindingResult bindingResult, Model model) 12{ 13 //テキスト入力のたこやきという文字列はこれで取得できました 14 System.out.println(form.hello); 15 //ボタンの値は下記でとれる想定 16 System.out.println(form.hoge); 17}

###試したこと
Request.getparameterで値を取得しようと試みましたが、textの文字列は取得できましたが、ボタンの値は取得できませんでした。
textの文字列は下記で取得可能
System.out.println(request.getParameter("hello"));
ボタンの値は下記で取得できず
System.out.println(request.getParameter("hoge"));

###補足情報(言語/FW/ツール等のバージョンなど)
Java8 eclipse4.5で開発しています。

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

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

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

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

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

guest

回答3

0

ベストアンサー

回答例2のサンプルを記載します。

単なる HTML なので、form の部分は自分の環境に合わせて書き換えて下さい。
(たぶんそのまま上書きして大丈夫だと思います)

html

1<!DOCTYPE html> 2<html> 3<head> 4<title>form サンプル</title> 5</head> 6<body> 7 <form action="some/where/address" method="post"> 8 <p><input type="text" name="hello" value="たこやき"></p> 9 <p><input type="button" value="検索" onClick="setHoge();"></p> 10 <input type="hidden" id="hoge" name="hoge" value=""> 11 <p><input type="submit" value="実行"></p> 12 </form> 13<script> 14 15 /* select ボタンを押したときに実行する JavaScript. 16 hidden の入力欄 hoge に文字列 hoge1 を与える. 17 */ 18 19 function setHoge(){ 20 document.getElementById("hoge").value = "hoge1"; 21 } 22</script> 23</body> 24</html>

ポイントは

  1. 「探索」ボタンから hoge の設定を削除して
  2. input type="hidden" 形式で hoge を追加した

ことです。


「探索」ボタンをクリックした時に JavaScript の関数 setHoge() が実行されます。

setHoge() は 入力欄 hoge に値 hoge1 をセットします。
右辺側の文字列 "hoge1" は好きな文字に修正できます。

hoge の値は type="hidden" に設定されているため見えません。
動作を確認する場合は

html

1<input type="hidden" id="hoge" name="hoge" value="">

html

1<input type="text" id="hoge" name="hoge" value="">

に変更すると「探索」ボタンを押したときの動きが分かりやすいです。


回答例は以上になります。

こんな感じでどうでしょうか?
よろしくおねがいします。

投稿2017/06/23 00:48

編集2017/06/23 00:53
Yosuke-Kawakami

総合スコア123

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

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

y_matsumoto

2017/06/23 09:35

期待通りの出力を確認できました。 ありがとうございました。
guest

0

【追記】この回答は(不要と判断したため)作成者から削除リクエストを送信しました。


 
フォームの中で一般的なサブミットを行う場合は、このページを参照すると便利かもしれません。

HTMLタグリファレンス - フォームの送信ボタン・リセットボタンを作成する

投稿2017/06/21 05:30

編集2017/06/21 05:44
Yosuke-Kawakami

総合スコア123

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

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

y_matsumoto

2017/06/21 07:52

回答ありがとうございます。 該当箇所を下記に修正しましたがボタンの値は取得できませんでした。 <div Align="center"> <input type="text" id="hello" name="hello" value="たこやき" /> <p></p> <button type="button" name="hoge" value="hoge">検索</button> <p></p> <button type="submit">実行</button> <p></p> </div>
Yosuke-Kawakami

2017/06/21 08:16

すみません、回答が雑でした。回答パターンとしては以下の2例があると思います。 一度に書きすぎると文量が多くなるので、ご希望のパターンを教えてください。 (回答例1) そもそもフォームの動作としてボタンに値を与えるのは設計的におかしいです。 「チェックボックス」や「ラジオボタン」、「プルダウンメニュー」などから値を摂るのが一般的です。 → 入力例を提示 (回答例2) ボタンを押すことで何か値を設定させたい場合はボタンに onClick イベント設定して JavaScript などから動的に値を設定するようにしましょう(見た目が変わってしまうのが嫌な場合は type="hidden" を使うといいかもしれません) → 処理例を提示
y_matsumoto

2017/06/22 09:04

回答ありがとうございます。 設計的におかしかったんですね、そこらへんよく分からず作成していました、 教えていただきありがとうございます。  回答例2のやり方でボタンの値を取ろうと思います。 申し訳ありませんが、処理例を教えていただきたいです。
guest

0

ボタンの値を取りたい場合は

  1. <button type="submit"> ではなく <button type="button"> にしてください
  2. サブミットボタンを別に用意してください

 

【追記】フォームの中で一般的なサブミットを行う場合はこのページを参照すると便利かもしれません。

HTMLタグリファレンス - フォームの送信ボタン・リセットボタンを作成する

投稿2017/06/21 05:23

編集2017/06/21 05:33
Yosuke-Kawakami

総合スコア123

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問