- 締切済み
java → jsp コンボボックス表示について
javaで取得したコードが 002があるとします。 DBにコード001 002 003 004 と入っているとして、 (ArrayListで取得済み デフォルトが001になる状態で表示確認済み) jspで表示させる際、selectedが002 に自動的になり、コンボボックスで表示させることは可能ですか? ※AからBへ遷移するとして 整理すれば Aの画面で 選択されたコード002 を Bの画面のコンボボックスで selected を002にする。 現在のコード <%for (int i = 0; i < CdOnlyList.size(); i++) {%> <option value="<%=CdOnlyList.get(i)%>"><%=CdOnlyList.get(i)%></option> <%}%>
- みんなの回答 (2)
- 専門家の回答
みんなの回答
<%=request.getAttribute("s_num") == i ? "selected" : "" %> これはできないでしょう。getAttributeした値はintではありませんから、intに変換してから比較しないと。 もう少し、細かなところの動作をきちんと理解して処理するように心がけたほうがよいと思いますよ。
>jspで表示させる際、selectedが002 に自動的になり、コンボボックスで表示させることは可能ですか? JSPに限らず、可能です。要するに、どの<option>を選択させるかをあらかじめチェックしておき、その<option>タグを出力するときに、タグ内にselectedを書き出せばいいだけです。 // int sel_num変数の<option>タグにselectedを出力する <%for (int i = 0; i < CdOnlyList.size(); i++) {%> <option value="<%=CdOnlyList.get(i)%>" <%=sel_num == i ? "selected" : "" %>><%=CdOnlyList.get(i)%></option> <%}%> 例えば、こんな感じにすれば、sel_num番目の<option>にだけselectedが書き出され、この項目が選択された状態で表示されるはずです。
補足
回答ありがとうございます。 java側で request.setAttribute("s_num", snum); でセットし snumには何番目かは取得できています。※int snumをセットですが、取得時はStringになっていますよね? JSP側で <%for (int i = 0; i < CdOnlyList.size(); i++) {%> <option value="<%=CdOnlyList.get(i)%>" <%=request.getAttribute("s_num") == i ? "selected" : "" %>><%=CdOnlyList.get(i)%></option> <%}%> としていますが、エラーがでます・・。 「org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: 」という内容で・・。
お礼
お忙しい中 回答ありがとうございます。もっと勉強してみようと思います。^^