- ベストアンサー
java / jsp selectedについて
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") %> <% } %>
- みんなの回答 (2)
- 専門家の回答
お礼
ご回答ありがとうございます。 スペース、ですね。 そう言われてみると、表示されたWebページを「ソースを表示」で見た時、HashMapから取得されたデータの部分が<りんご >というような感じになっていたのを見たような気がします。 今環境がないため、明日さっそく試してみたいと思います。 でもソース自体に問題はなさそう、という事で安心しました。 またご報告させていただきます。 ※AとBのnull値の場合は、質問には記述しておりませんでした。ありがとうございました。
補足
先程家で簡単なプログラムで試してみたところ、やはりスペースが邪魔をしていたようです。 スペースが入っていた原因は、DBでのデータ型がchar(20)型で設定されていたためと思われます。 今までchar型での仕様ではつくったことがなかったため、全く気がつきませんでした。 なんとか明日うまくつくれそうです。 ありがとうございました。