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

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

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

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

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Java

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

サーブレット

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

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

Q&A

解決済

2回答

59428閲覧

JSPからhiddenの値をgetParameterしたいが、nullになってしまう。

Sfidante

総合スコア90

JSP

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

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

Java

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

サーブレット

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

パラメータ

関数やプログラム実行時に与える設定値をパラメータと呼びます。

0グッド

0クリップ

投稿2015/05/19 03:45

こんにちは、プログラミング初心者で
現在Webアプリケーションを作っています。
その中でどうしてもうまくいかないところがあるため、
質問させて頂きます。

行いたいことは、JSPに記載されている
hiddenのパラメータをサーブレットのgetParameterで取得したいです。
しかし、どうしても取得した値がnullになってしまうので、
手詰まり状態です。
何卒ご教授下さい。

問題のJSPの関係のあるであろうコードを以下に記載致します。

lang

1<form> 2 <c:forEach var="honzitsunokouho" items="${ sessionScope.pairToday }"> 3 <input type="hidden" name="yourpairid" value="${ honzitsunokouho.pairId }"/> 4 <ul class="box-pairlist"> 5 <li> 6 <a href="PairInfo?switch=pairDetail"> 7 <div> 8 <span class="label-treated"></span> 9 <div class="photo"> 10 <div><!-- photo --> 11 <img class="lazy" 12 data-original="https://graph.facebook.com/${ honzitsunokouho.photo1 }/picture?width=120&height=120" 13 width="120" 14 height="120" 15 alt="" /> 16 <span class="new"></span> 17 </div> 18 <div><!-- photo --> 19 <img class="lazy" 20 data-original="https://graph.facebook.com/${ honzitsunokouho.photo2 }/picture?width=120&height=120" 21 width="120" 22 height="120" 23 alt="" /> 24 <span class="new"></span> 25 </div> 26 </div> 27 <div class="info"> 28 <ul class="profile"> 29 <li> 30 <span class="name">${ honzitsunokouho.name1 }(${ honzitsunokouho.age1 })</span> 31 <span class="job">${ honzitsynokouho.employment1 }${ honzitsunokouho.school1 }</span> 32 </li> 33 <li> 34 <span class="name">${ honzitsunokouho.name2 }(${ honzitsunokouho.age2 })</span> 35 <span class="job">${ honzitsynokouho.employment2 }${ honzitsunokouho.school2 }</span> 36 </li> 37 <li class="shop">肉会のお店:${honzitsunokouho.shop }</li> 38 </ul> 39 </div> 40 </div> 41 </a> 42 </li> 43 </ul> 44 </c:forEach> 45 </form>

いまいち、フォーム文等についても理解できていないので、
どの辺りまでくくれば良いかなどわからずに作りました。

そして、こちらがhiddenの値を取得するサーブレットです。

lang

1dao.connect(); 2 String yourPairID = String.valueOf(request.getParameter("yourpairid")); 3 System.out.println(yourPairID);

こちらは普通にgetParameterしているだけなので問題は無いかと思っております。
sysoutしてもnullとの表記です。

JSPについて中心的に見て頂けたらと思います。
何卒よろしく御願い致します。

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

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

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

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

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

guest

回答2

0

こんにちは。

自分が気になったのは、ココ↓

<c:forEach var="honzitsunokouho" items="${ sessionScope.pairToday }">
<input type="hidden" name="yourpairid" value="${ honzitsunokouho.pairId }"/>
・・・(略)・・・
</c:forEach>

sessionScope.pairToday は配列なのですよね。
配列であるならば、hiddenタグが ループ内にあるので、同じname="yourpairid"のhiddenタグが
複数作成されるようになっています。
同じnameが複数ある場合は、getParameterではなく、getParameterValuesとかで取得するんじゃないかなと思います。
参考:リクエストパラメータの取得(getParameter)

投稿2015/05/19 04:30

編集2015/05/19 04:31
kaputaros

総合スコア1844

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

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

Sfidante

2015/05/19 05:48

ご返信ありがとうございます。 一応解決致しました。 ご教授いただきありがとうございました。
guest

0

ベストアンサー

こんにちは。
以下、的外れな指摘でしたらすみません、スルーしてください。

ご質問に挙げられているJSPについて、気になった点としては

(1) JSPの冒頭が

<form> となっており、action属性がない。

(2) <form>を submit するための要素(たとえば<input type="submit" />など)がない。

上記の2点により

本当にサーブレットにリクエストが送られているのか?

という点です。

ご参考になれば幸いです。


補足:

それと

lang

1String yourPairID = String.valueOf(request.getParameter("yourpairid"));

とされているのですが、ServletRequest#getParameter メソッド はString型を返しますので、
単に

lang

1String yourPairID = request.getParameter("yourpairid");

でよいと思います。


補足2

いろいろ申し上げて済みません。
もう一点ありました。

lang

1 <c:forEach var="honzitsunokouho" items="${ sessionScope.pairToday }"> 2 <input type="hidden" name="yourpairid" value="${ honzitsunokouho.pairId }"/>

となっているので、ひとつのフォームの中に name="yourpairid" のinput要素が
複数生成されることになりますが、これを意図してやっている(=一回のリクエストで
複数のyourpairidを送ろうとしている)のであれば、受け取る側では
ServletRequest#getParameterValues
を使って、

lang

1String[] yourPairIDs = request.getParameterValues("yourpairid");

として配列で受け取ったほうがよいと思います。

投稿2015/05/19 03:57

編集2015/05/19 04:30
jun68ykt

総合スコア9058

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

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

Sfidante

2015/05/19 05:44

ご返信ありがとうございます。 無事に解決致しました。 色々ご教授いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問