
いつもお世話になっております。
サーブレット&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で質問しましょう!
似たような質問が見つかりました
- PHP php my adminより取り出したデータ表示 2 2022/06/15 11:56
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Java 問題作成のWebアプリの作り方を教えてください 1 2022/11/26 22:01
- その他(プログラミング・Web制作) python コードについて(初学者です) 3 2023/07/20 14:44
- JavaScript セレクトボックスで配列を呼び出したい。 1 2022/07/08 20:14
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/06 17:46
- JavaScript HTML&CSS Javascriptによる動的テーブル 1 2023/03/27 19:51
- Access(アクセス) Accessテーブルの結合で別々のテーブルのフィールドを組み合わせて値を出す方法について 2 2022/07/20 19:43
- その他(プログラミング・Web制作) セレクトボックスで選択された値をコントローラーで使用したい 2 2022/07/26 16:41
このQ&Aを見た人はこんなQ&Aも見ています
-
JSPで<SELECT>の中にDBから持ってきたデータを反映させたい
Java
-
javaでDBから取得したデータのJSP表示
Java
-
JSP内でString型からint型に変換する方法(SAStruts使用)
Java
-
-
4
JSPのクラスをコンパイルできない問題
Java
-
5
JSPの処理の途中で、JavaScriptの処理をしたい
JavaScript
-
6
プルダウンメニューにDBの内容を表示させる
PHP
-
7
StrutsでJSPからListを受け取りたい
Java
-
8
Java-jspの画面入力値保持について
Java
-
9
プルダウンで選択すると、DBの値を取得したい
JavaScript
-
10
リクエストに応じたselectedの初期値設定方法
Java
-
11
フォーム上で押されたボタンによってサーブレットの処理を変えたい
Java
-
12
GROUP BYを行った後に結合したい。
Oracle
-
13
フォームで同じ複数のnameで違うvalueの送信
Java
-
14
jsp~jspにhiddenを使って変数を飛ばしたい
JavaScript
-
15
jspからjavascriptの変数引継ぎ
JavaScript
-
16
<s:iterator>の値をリストで取得したい
Java
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
初心者です。一つのformで2つの...
-
ログイン時でセッションでのユ...
-
Servletへフォームから配列を送...
-
int型の内容をbyteの配列にコピー
-
セッション切れでのリクエスト...
-
三菱GOTの画面切り替えについて
-
プルダウン形式でリンク先を選ぶ
-
ボタンが活性化の場合とは、ボ...
-
Webアプリを開発しています。
-
PDFファイルを表示するサブ...
-
Ctrl+F4を無効にしたい
-
自動フリガナ機能を実装したい
-
画面の再表示
-
Sessionがnullになりません。
-
ASPとCGIの違い
-
FormのsubmitでFormの内容がnull
-
system("cls")について
-
GetWindowRect()が正しくない。
-
文字認証の見方
-
このadidasの腕時計の時刻の設...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フォーム上で押されたボタンに...
-
リクエストに応じたselectedの...
-
フォームで同じ複数のnameで違...
-
int型の内容をbyteの配列にコピー
-
「<c:forEach タグが終了し...
-
JSPでのリストボックス表示
-
StrutsでPOSTのデータ(リクエ...
-
ラジオボタンの選択肢をサーブ...
-
jspでjavascript関数へ引数を渡...
-
EL式 true falseを表示
-
Strutsで、どのRadioボタンが選...
-
strutsを使用したjspでjavascri...
-
strutsを使ってテキストエリア...
-
jspファイルで注文フォームの合...
-
JSPでのサブミット判定
-
formでテキストとファイルタイ...
-
Struts2のifタグについて
-
struts bean:defineについて
-
動的に作成したラジオボタンの...
-
教えてください:strutsのhtml:...
おすすめ情報