![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_06.png?e8efa67)
Formの<SELECT>について教えて下さい。
リストの内容はデータベースからjavaで取得し、Bという名前のArrayListに格納。それをフォームのセレクトボックスでjspで取得し表示しています。
やりたい事は、java側でAの名前でセットしたデータがBにあれば、セレクトボックスで選択した状態にしたいのですが、どうしてもうまくいきません。
以下のコードだと if (A.equals(B)) のところがおかしいようで、試しに if(A.equals("りんご"))の様にデータ名を明示的に書くとうまくいきます。
しかしそうすると今度は、セレクトボックスで"りんご"が選択された時にすべてのデータに selected が入り、セレクトボックスの最後のデータが選択状態になります。
悪いところだらけのコードのようです…。
すみませんがご教授お願い致します。
<%
//キー Aで設定したデータを取得
String A = (String)request.getAttribute("A");
%>
<%
//ArrayListに入っているデータをループで取得
for (int i = 0; i < al.size(); i++) {
HashMap hash = (HashMap)(al.get(i));
String B = (String)hash.get("B");
%>
<option
<%
//Bの値がAと同じであれば選択状態にする。
if (A.equals(B)) {
%>
selected
<%
}
%>
value = <%= (String)hash.get("B") %>><%= (String)hash.get("B") %>
<%
}
%>
No.2ベストアンサー
- 回答日時:
見たところ、特に問題はないように思えます。
equalsで比較することが悪いということはないので、
やはりAとBの値が異なるんじゃないかと思いますが…
よーく見るとどっちかがtrimかかってなくて
後ろにスペースがあったとか。。。。
あと質問に関係ないですが、AとBを取るときに
nullが来る考慮がないのが気になりました。
(質問用だから入れてないだけなのかな?)
この回答への補足
先程家で簡単なプログラムで試してみたところ、やはりスペースが邪魔をしていたようです。
スペースが入っていた原因は、DBでのデータ型がchar(20)型で設定されていたためと思われます。
今までchar型での仕様ではつくったことがなかったため、全く気がつきませんでした。
なんとか明日うまくつくれそうです。
ありがとうございました。
ご回答ありがとうございます。
スペース、ですね。
そう言われてみると、表示されたWebページを「ソースを表示」で見た時、HashMapから取得されたデータの部分が<りんご >というような感じになっていたのを見たような気がします。
今環境がないため、明日さっそく試してみたいと思います。
でもソース自体に問題はなさそう、という事で安心しました。
またご報告させていただきます。
※AとBのnull値の場合は、質問には記述しておりませんでした。ありがとうございました。
No.1
- 回答日時:
>やりたい事は、java側でAの名前でセットしたデータがBにあれば、セレクトボックスで選択した状態にしたいのですが、
>どうしてもうまくいきません。
どのようにうまくいかないのかわからないので何とも言えませんが、
単純にArrayListのデータがおかしいのではありませんか?
SELECT部分は問題ないように見えます。
>以下のコードだと if (A.equals(B)) のところがおかしいようで、試しに if(A.equals("りんご"))の様に
>データ名を明示的に書くとうまくいきます。
>しかしそうすると今度は、セレクトボックスで"りんご"が選択された時にすべてのデータに selected が入り、
>セレクトボックスの最後のデータが選択状態になります。
Aの値が"りんご"だったら当然そうなるでしょうね。
>value = <%= (String)hash.get("B") %>><%= (String)hash.get("B") %>
value = <%= B %> > <%= B %> でいいのでは?
わざわざ複雑なコードにすることもないでしょう。
この回答への補足
ご回答ありがとうございます。
まず、
>value = <%= (String)hash.get("B") %>><%= (String)hash.get("B") %>
>value = <%= B %> > <%= B %> でいいのでは?
>わざわざ複雑なコードにすることもないでしょう。
ここは確かにそのとおりですね。
あまりこの部分には重点をおいていなかったので…。
ArrayListのデータはおかしくないようです。
value値のところでは期待通りの値が取得できています。
同じデータの取り方で、なぜ if (A.equals(B))がとれないかが分かりません。
Aの値もBの値も、Stringになっているのですが、equals では比較の仕方が悪いのでしょうか?
if(A.equals("りんご")) のように比較オブジェクトを明示的にかくと、比較はできるのですが、そのあたりの事でお分かりでしたら、どうぞよろしくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ゆるやかでぃべーと タイムマシンを破壊すべきか。
これはディベートの論題だと仮定したうえでの回答お願いします。あなたは、その末にタイムマシンを壊してしまうのか、使い道を探すのかどうかを考えてもらいたいです。
-
リクエストに応じたselectedの初期値設定方法
Java
-
JSPで<SELECT>の中にDBから持ってきたデータを反映させたい
Java
-
javaでDBから取得したデータのJSP表示
Java
-
-
4
プルダウンで選択すると、DBの値を取得したい
JavaScript
-
5
JSPでのリストボックス表示
Java
-
6
JSPでDBからデータ読み込みブラウザーで10件ずつ表示させたい。
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでアクセスDBからデータの取...
-
「Nullの使い方が不正です」の...
-
Excel VBAで1週間毎にカテゴリ...
-
アクセスでウェブ上のデータを...
-
部品表
-
Excel VBA WEBからデータ取得時...
-
COBOL数値転記の仕様
-
DataGridの全行編集状態での行追加
-
Excel VBAでグループ毎に集計す...
-
java / jsp selectedについて
-
【C#】textBoxの指定行のデータ...
-
エクセルVBA WEBからデータ取...
-
エクセルのセル最終行取得
-
ListViewで表示されたデータの...
-
矩形グラフ(オシロやロジアナ...
-
C#でbyte配列から画像を表示さ...
-
VBA 変数名に変数を使用したい。
-
手動または分散トランザクショ...
-
Accessのフィールド名に半角括...
-
『列名 '担当者CD' があいま...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでアクセスDBからデータの取...
-
【C#】textBoxの指定行のデータ...
-
「Nullの使い方が不正です」の...
-
C# DataTableに最後に追加した...
-
XMLでデータとして画像を指定す...
-
VBAコンボボックスの内容が反映...
-
Excel VBAでフォルダ内の全テキ...
-
COBOL数値転記の仕様
-
エクセルのセル最終行取得
-
ListViewで表示されたデータの...
-
【VB.NET】Excelの最終行までの...
-
MSFlexGrid 行選択状態
-
アクセスでウェブ上のデータを...
-
【ExcelVBA】値を変更しながら...
-
クリスタルレポートでレコード...
-
ADODBでの行番号の取得、もしく...
-
Excel VBAでグループ毎に集計す...
-
VB2010で、選択した系列を最前...
-
VB webデータの取得
-
エクセルのCSV読み込みについて
おすすめ情報