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

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

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

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

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

25561閲覧

springのformで値が取得できない。

takaneyukiho

総合スコア13

JSP

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

Java

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

1クリップ

投稿2016/09/26 07:35

編集2016/09/26 07:42

JSPのフォーム送信で値を送り、Java側のformに値を送ろうとしたところ
複数送ったvalueの内、先頭に送った値がformに受け取れておらず、cotroller側でgetしても
nullになってしまいます。ご回答よろしくお願いします。
ソースはいかになります。

<Controller> @Controller public class DayLessonRegistController { @Autowired private DayLessonRegistDao registDao; @RequestMapping(value="/day_lesson_regist_push" ,method = RequestMethod.POST) public String dayLessonRegistFinish(@ModelAttribute DayLessonRegistForm dayLessonRegistFormko,Model model,HttpSession session) throws ParseException{//formやセッションなどの引数 System.out.println(dayLessonRegistForm.getLesssonRoomId());//ここがnullで困っています。 System.out.println(dayLessonRegistForm.getLessonId());//こちらは しっかりと取ってきます。 DayLessonRegistForm dayLessonRegistCheck = registDao.RegistFinish(dayLessonRegistForm,session); model.addAttribute("dayLessonRegistCheck",dayLessonRegistCheck); return "/dayLesson/lesson_regist_finish"; } }
<form> package jp.co.xmd.form; public class DayLessonRegistForm { private String lessonroomId; public void setLessonRoomId(String lessonroomId) { this.lessonroomId = lessonroomId; } public String getLesssonRoomId() {//controller側で値が取れない。 return lessonroomId; } private String lessonroomName; public void setLessonRoomName(String lessonroomName) { this.lessonroomName = lessonroomName; } public String getLesssonRoomName() { return lessonroomName; } private String lessonId; public void setLessonId(String lessonId) { this.lessonId = lessonId; } public String getLessonId() { return lessonId; } private String lessonName; public void setLessonName(String lessonName) { this.lessonName = lessonName; } public String getLessonName() { return lessonName; } private String date; public void setDate(String date) { this.date = date; } public String getDate() { return date; }
<JSP> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <%@ taglib uri="http://www.springframework.org/tags" prefix="s"%> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="f"%> <%@page pageEncoding="UTF-8"%> <!DOCTYPE html> <html lang="ja"> <head> </head> <body> <div id="main"> <form class="form-inline" action="day_lesson_regist_push" method="POST"> <div class="centering"> <div class="form-group"> <label>教室名</label> <select class="form-control" id="number" name="lessonroomId"> <c:forEach var="room" varStatus="roomstatus" items="${LessonRoomList}"> <option value="${roomstatus.count}"> <c:out value="${room.room_name}" /></option> </c:forEach> </select> </div> <div class="form-group"> <label>レッスン</label> <select class="form-control" id="number2" name="lessonId"> <c:forEach var="lesson" varStatus="lessonstatus" items="${LessonList}"> <option value="${lessonstatus.count}"> <c:out value="${lesson.lesson_name}" /></option> </c:forEach> </select> </div> <div class="text-right"> <input type="submit" value="登録" class="btn btn-default"> </div> </form> </div> </div> </body> </html>

コンソールの結果は以下の通りです。

null
1

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

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

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

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

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

guest

回答1

0

ベストアンサー

formのsetterの名前がsetLessonRoomIdになっているからだと思います。
submitするselectのnameをlessonRoomIdにするか、formのsetterをsetLessonroomIdに変更したら受け取ることができると思います。

投稿2016/09/26 07:50

ijufumi

総合スコア276

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

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

takaneyukiho

2016/09/26 08:06

ご回答ありがとうございます。解決しました。 ちなみにお聞きしたいのですが、今までJSP側のname属性とformの フィールド名を一致させればいいという認識だったのですが、実際はどのような 一致のさせ方なのでしょうか?ご回答よろしくお願いいたします。
ijufumi

2016/09/26 09:50

公式ドキュメントを探すことはできませんでしたが、Springは内部でjava.util.PropertyDescriptorを使っていて、「set + パラメータ名の先頭を大文字 + パラメータ名の先頭以外の文字」という命名規則でパラメータを設定しています。 例えFrameworkで制限がなかったとしても、setter/getterの名前は、「set/get + フィールド名の先頭大文字 + フィールド名の先頭以外の文字列」という名前のつけ方をしていると、他の人も読みやすいと思います。
takaneyukiho

2016/09/27 01:00

とても分かりやすい説明ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問