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

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

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

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Q&A

解決済

1回答

7189閲覧

[Spring] 再表示時のリスト選択値について

yukidaruman

総合スコア13

JSP

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

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

0グッド

0クリップ

投稿2017/10/05 07:21

編集2017/10/05 08:17

spring での開発で、画面再表示時のリストボックスの初期選択がされなくて困っています。
色々試してみましたが、答えが見つけられませんでした。
お力添えお願い致します。

リストが2つあり、親リストの選択値によってもう片方の子リストの表示内容を切り替えたいため
子リストのほうへカスタムデータ属性を持たせたいです。
(切替処理自体はjqueryで行っています)

この際、form:options を利用するとdata属性を持たせるができないため
optionは<c:forEach>を使い、普通のoptionタグにて実装しました。

そうすると、初期表示やリスト切替はうまくいったのですが
何かの処理イベントでController側でバリデーションとなって再度viewを表示すると
子リストのみ選択値が処理前と同じではなくなってしまいます。(1行目になってしまう)

formの中身が渡っていないのかと思い、直接画面上に表示してみましたが
そちらの値は入っているようです。

form:optionのタグを使うと処理前と同じ値が選択されています。

↓ 上手く行かないソース

jsp

1<!-- 親リスト --> 2<f:select path="area" class="l_base" cssErrorClass="error_input"> 3 <option value="" class="msg">--- 都道府県を選択 ---</option> 4 <f:options 5 items="${xxxForm.areaList}" 6 itemLabel="name" itemValue="code" /> 7</f:select> 8 9<!-- 子リスト --> 10<f:select path="place" class="l_interlock" cssErrorClass="error_input"> 11 <option value="" class="msg">--- 市を選択 ---</option> 12 <c:forEach var="entity" items="${xxxForm.placeList}"> 13 <option value="${entity.code}" data-val="${entity.areaKbn}"><c:out value="${entity.name}" /></option> 14 </c:forEach> 15</f:select>

↓ 上手くいくソース

jsp

1<f:select path="place" class="l_interlock" cssErrorClass="error_input"> 2 <option value="" class="msg">--- 市を選択 ---</option> 3 <f:options 4 items="${xxxForm.placeList}" 5 itemLabel="name" itemValue="code" /> 6</f:select>

表示されたhtmlを見るとどちらも同じなのですが
初期設定値ということはjspの段階で何かしているのだと思ったのですがわかりませんでした。
formの"place"に入っている値を再表示時に選択させるにはどうしたらよいのでしょうか?

ご教授、よろしくお願い致します。

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2017/10/05 08:18

子リストをみれば一目瞭然じゃろう・・・
yukidaruman

2017/10/05 09:38

すいません。わかりませんでした。。
guest

回答1

0

自己解決

form:optionsではなくform:optionタグを使えばカスタムデータ属性が普通につけられました。

一応、修正したソースを載せておきます。

jsp

1<c:forEach var="entity" items="${xxxForm.placeList}"> 2 <form:option value="${entity.code}" label="${entity.name}" data-val="${entity.areaKbn}"></form:option> 3</c:forEach>

投稿2017/10/12 02:32

yukidaruman

総合スコア13

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問