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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) VBAでoutlook365が起動しません。 4 2022/08/25 13:31
- Visual Basic(VBA) 入力ボックスが繰り返しポップアップして止まらない。 下記コードでファイル名の変更をしたいのですが、変 1 2022/09/08 11:27
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
このQ&Aを見た人はこんなQ&Aも見ています
-
新NISA制度は今までと何が変わる?非課税枠の拡大や投資対象の変更などを解説!
少額から投資を行う人のための非課税制度であるNISAが、2024年に改正される。おすすめの銘柄や投資額の目安について教えてもらった。
-
リクエストに応じたselectedの初期値設定方法
Java
-
JSPでのリストボックス表示
Java
-
javaでDBから取得したデータのJSP表示
Java
-
-
4
JSPで<SELECT>の中にDBから持ってきたデータを反映させたい
Java
-
5
プルダウンで選択すると、DBの値を取得したい
JavaScript
-
6
プルダウンメニューにDBの内容を表示させる
PHP
-
7
<input>の選択肢をプルダウンメニューから受け取り、hiddenで
JavaScript
-
8
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
9
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
10
MySQLでデータベースにデータinsert時のエラー。
Java
-
11
jsp 改行コードで改行させて表示したい
Java
-
12
レコード件数の表示
Java
-
13
JSPでDBからデータ読み込みブラウザーで10件ずつ表示させたい。
Java
-
14
JSPのNULLレコード表示について教えて下さい。
Java
-
15
プルダウンメニューを選択したあとの固定して表示したい
JavaScript
-
16
select要素のvalueを配列で取得したいです
JavaScript
-
17
JSPファイルで生じるエラーをどのように修正するか分かりません
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
非同期のプロセス間通信(パイプ...
-
「Nullの使い方が不正です」の...
-
富士通(汎用機)のAIMについて
-
batでレジストリキーから読み取...
-
java / jsp selectedについて
-
エクセルのマクロ コンボボッ...
-
VBAコンボボックスの内容が反映...
-
VBAでアクセスDBからデータの取...
-
Excel VBAでグラフの可変データ...
-
C# DataTableに最後に追加した...
-
ActiveReportのdetailをデータ...
-
エクセルのCSV読み込みについて
-
ADODBでの行番号の取得、もしく...
-
【VB.NET】Excelの最終行までの...
-
事務処理ソフトの開発に使用す...
-
AccessVBAでのExcelメモリ解放
-
Excel VBAでグループ毎に集計す...
-
アクセスでウェブ上のデータを...
-
MSFlexGrid 行選択状態
-
[リボンのキーボード ショート...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
XMLでデータとして画像を指定す...
-
【C#】textBoxの指定行のデータ...
-
VBAでアクセスDBからデータの取...
-
Excel VBAでフォルダ内の全テキ...
-
【VB.NET】Excelの最終行までの...
-
C# DataTableに最後に追加した...
-
「Nullの使い方が不正です」の...
-
VBAコンボボックスの内容が反映...
-
COBOL数値転記の仕様
-
クリスタルレポートでレコード...
-
VB2010で、選択した系列を最前...
-
アクセスでウェブ上のデータを...
-
Excel VBAで1週間毎にカテゴリ...
-
非同期のプロセス間通信(パイプ...
-
エクセルのセル最終行取得
-
ActiveReportのdetailをデータ...
-
富士通(汎用機)のAIMについて
-
Excel VBAでグループ毎に集計す...
-
エクセルのCSV読み込みについて
-
AccessVBAでのExcelメモリ解放
おすすめ情報