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

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

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

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

Q&A

0回答

6655閲覧

JSTL セレクトボックスのオプションをforeachを使用して生成した時に、生成した各オプションのselectedの指定がうまくいかない。

take-chan

総合スコア17

JSP

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

0グッド

0クリップ

投稿2016/08/16 02:24

編集2022/01/12 10:55

JSP、JSTLを使用して、
以下のようなコードで、複数選択可能なセレクトボックスを生成しようとしています。

【要件】
systemSelectItems(Map<String,String>)に格納されている値からセレクトボックスを生成する。
systemSelectItems(Map<String,String>)のKeyの中で、
もしform.systemIdList(List<String>)の値と一致するものがあった場合は、
selectedオプションを付けて選択した状態でセレクトボックスを生成したい。

【問題点】
form.systemIdListの最後の要素と一致するもののみが、
selected:true指定されてセレクトボックスが生成されてしまう。

例えば各変数に以下のようなデータが格納されている状態の場合、
systemSelectItems
A1,A2
B1,B2
C1,C2

form.systemIdList
B2
C2

セレクトボックスは以下のような状態で作成されてほしい。
A2 selected:false
B2 selected:true
C2 selected:true

が以下ような状態となり、
B2はseleted:trueとなることを期待しているが、
falseになってしまう。

A2 selected:false
B2 selected:false
C2 selected:true

【質問内容】
上記の問題を解決する方法について、ご教授頂きたくお願い申し上げます。

HTML

1**JSP** 2 <form:select id="systemId" path="systemIdList" size="5" multiple="multiple" > 3 <c:forEach items="${systemSelectItems}" var="sitem"> 4 <c:set var="selectedSystemFlg" value="false" /> 5 <c:choose> 6 <c:when test="${fn:contains(sitem.key, 'OPTGROUP')}"> 7 <optgroup label="${sitem.value}" /> 8 </c:when> 9 <c:otherwise> 10 <c:forEach items="${form.systemIdList}" var="systemId"> 11 <c:if test="${systemId == sitem.key}" var="selectedSystemFlg" /> 12 </c:forEach> 13 <c:choose> 14 <c:when test="${selectedSystemFlg}"> 15 <option selected="true" value="${sitem.key}" label="${sitem.value}"/> 16 </c:when> 17 <c:otherwise> 18 <option value="${sitem.key}" label="${sitem.value}"/> 19 </c:otherwise> 20 </c:choose> 21 </c:otherwise> 22 </c:choose> 23 </c:forEach> 24 </form:select>

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2016/08/16 02:32 編集

JSF+JSTL かなこれ? その他タグライブラリをつかってるからもう少し効率が良い書き方があるはずだが
take-chan

2016/08/16 02:40

知識不足で大変申し訳ございません。 この回答を書きつつ、JSFが何か今調べているような状態です。 大変恐縮なのですが、何を見ればJSFか判断が付くかご教授頂けないでしょうか? また役に立つかわかりませんが、 以下のような言語、フレームワークを使い、 Webアプリケーション開発をしております。 またWebコンテナはTomcatを使用しております。 ・Java ・JSP ・JSTL ・SpringFrameWork ・Apache Commons
take-chan

2016/08/16 02:44

「その他タグライブラリをつかってるからもう少し効率が良い書き方があるはずだが」おっしゃる通りだと思います。ただ現状の知識では、他の方法について思いつかず、今回のようなコードで進めていた状態です。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問