
いつもお世話になっております。
サーブレット&JSPでプログラミングの勉強をしています。
JSPでリストボックスを表示させる際に、リストのアイテムをハードコーディングではなく、DBから取得したデータをArrayList等に格納し、表示させたいと思っています。
この場合、ループでArrayListのアイテムを1件ずつ取り出して、JSP内の<select><option></option></select>に当て込む方法が良いのでしょうか?
ちなみに以下のテーブル内容で、リストボックスには“作業内容”を表示させて、選択されたときには、“作業コード”を取得させたいのですが、どのようにすれば良いでしょうか?
テーブル
--------------------
作業コード|作業内容
--------------------
0000000001|プログラミング
0000000002|実装
0000000003|テスト
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
<select>
<option value="0000000001">プログラミング</option>
<option value="0000000002">実装</option>
<option value="0000000003">テスト</option>
</select>
↑こういう状態を作れば、見た目には内容が、値には番号が入ります。
あとは単純にぐるぐるまわせばいいだけですね。
<select name=hoge>
<%for(i=0;i<arrayA.length();i++){%>
<option value="<%=arrayA[i]>">arrayB[i]</option>
<%}%>
</select>
スクリプトで
form.hoge[i].value = <%=arrayA[i]%>;
form.hoge[i].text = <%=arrayB[i]%>;
とかで埋め込むこともできます。
内容を書き換えたりすることがあるのなら、スクリプトを併用したほうが良いですね。
ryou0607さん、ご回答ありがとうございます。
上の例はとてもよく分かりました。
スクリプトのほうは、残念ながらよく分かりませんでした。
No.4
- 回答日時:
>>そのあとtempに“プログラミング”を代入してループを抜ける
そのとおりです。一般的には、ループを抜けたあとに最後の文字列をもう一度関数A()に渡しますね。
No.3
- 回答日時:
valueの値がServletに渡されるので、Servletで処理すればよいです。
<option value="0000000001,プログラミング">プログラミング</option>
↑これが選択されているときにsubmit()された場合、request.getParameter("hoge")の内容は"0000000001,プログラミング"になります。様々な情報をカンマで区切って格納して送信することはよくありますよ。
受け取ったServlet内で
int index = 0;
String temp = request.getParameter("hoge");
while(temp.indexOf(",")!=-1){
index=temp.indexOf(",");
関数A(temp.substring(0,index));
temp=temp.substring(index+1,temp.length());
}
で、関数Aにカンマ区切りの文字列を次々と渡したり。
どんな文字列でも送信することはできるので、あとはServletの処理しだいです。色々やってみてください。
ただ、Servlet/JSPを動かすときはJScriptを使う場合が多い(今のところ使わないシステムに出会ったことがない)ですので、JScript・html・Servlet/JSPの連携はできるようになっておいた方が良いです。
丁寧な解説ありがとうございます。
サンプルの内容だとwhileの中で、関数Aに“0000000001”を引数として渡して、
そのあとtempに“プログラミング”を代入してループを抜ける
という理解で合っていますでしょうか?
No.2
- 回答日時:
おそらく、JavaではなくJScriptの方がわからないってことですよね。
Java(JSPスクリプト)記述部において
arrayAの中身が{01,02,03}
arrayBの中身が{プログラミング、実装、テスト}
だとすると、
function func(){
form.hoge.length = 0;
<%for(i=0;i<arrayA.length();i++){%>
form.hoge[<%=i%>].value = '<%=arrayA[i]%>';
form.hoge[<%=i%>].text = '<%=arrayB[i]%>';
<%}%>
}
↑ここから生成されるhtmlは
function func(){
form.hoge.length = 0;
form.hoge[0].value = '01';
form.hoge[0].text = 'プログラミング';
form.hoge[1].value = '02';
form.hoge[1].text = '実装';
form.hoge[2].value = '03';
form.hoge[2].text = 'テスト';
}
↑こうなります。
form.hoge.length = 0;の部分でselectを初期化して、
valueに値を、textに表示文字列を埋め込んでいます。
body.onload時などにこういった関数を呼ぶこともありますし、別フレームに対して値を飛ばすときなどに重宝します。
ryou0607さん、ありがとうございます。
現在、JavaScriptには触れずにサーブレット&JSPを学んでいるため、せっかく詳しい説明をして頂いたのに中々理解できません。
もう少し勉強してからJavaScriptも手を付けたいと思います。
もうひとつ疑問が出てきました。
見た目には内容、そして値には番号と内容の両方を入れて、値を取得したらsubstringメソッドで
分割してそれぞれ使用しようと思っているのですが、これって大丈夫な方法なんでしょうか?
何度もすみません
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
リクエストに応じたselectedの初期値設定方法
Java
-
プルダウンメニューにDBの内容を表示させる
PHP
-
プルダウンで選択すると、DBの値を取得したい
JavaScript
-
-
4
JSPで<SELECT>の中にDBから持ってきたデータを反映させたい
Java
-
5
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
6
JSPでリンクを利用してパラメータを次画面に渡す方法について。
Java
-
7
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
8
jspからServletを呼び、元のjspページに戻るにはどうしたらよいですか?
Java
-
9
オブジェクトの中のプロパティを認識できません
Java
-
10
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
11
GROUP BYを行った後に結合したい。
Oracle
-
12
CASE文のエラーについて
Oracle
-
13
JSP内でString型からint型に変換する方法(SAStruts使用)
Java
-
14
jspからjavascriptの変数引継ぎ
JavaScript
-
15
StrutsでJSPからListを受け取りたい
Java
-
16
JSPのクラスをコンパイルできない問題
Java
-
17
Eclipse デバッグ エラー処理
Java
-
18
Java-jspの画面入力値保持について
Java
-
19
[HTML]プルダウンメニューの横幅固定について
HTML・CSS
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
フォーム上で押されたボタンに...
-
jspでjavascript関数へ引数を渡...
-
リクエストに応じたselectedの...
-
strutsを使ってテキストエリア...
-
フォームで同じ複数のnameで違...
-
「<c:forEach タグが終了し...
-
struts-config.xmlの設定
-
ボタンが活性化の場合とは、ボ...
-
Formのデータが欠落することがある
-
VB.NET DataReaderが開かれている
-
三菱GOTの画面切り替えについて
-
このadidasの腕時計の時刻の設...
-
グローバルIPアドレスの変更タ...
-
VB6 開発環境のエディタに行...
-
jspからServletを呼び、元のjsp...
-
ServletからServletへの値渡し
-
腕時計の時報をならないように...
-
ASP.NET 画面遷移前の状態を保...
-
EXCEL VBAで、EXCELの入力規則...
-
javascriptでのログアウトボタン
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
リクエストに応じたselectedの...
-
フォーム上で押されたボタンに...
-
「<c:forEach タグが終了し...
-
JSPでのリストボックス表示
-
フォームで同じ複数のnameで違...
-
jspでjavascript関数へ引数を渡...
-
int型の内容をbyteの配列にコピー
-
JSP+Servletで終了ボタン
-
EL式 true falseを表示
-
JSPでテキストボックスのループ...
-
動的に作成したラジオボタンの...
-
ラジオボタンの選択肢をサーブ...
-
log4jのレベルをdebugにすると...
-
文字列をタブ区切りで出力したい
-
struts-config.xmlの設定
-
JSPとサーブレット間での画面遷...
-
Strutsでの入力データチェック...
-
strutsを使ってテキストエリア...
-
struts bean:defineについて
-
JSFでJavaScriptを使用するには?
おすすめ情報