ママのスキンケアのお悩みにおすすめアイテム

いつもお世話になっております。
サーブレット&JSPでプログラミングの勉強をしています。

JSPでリストボックスを表示させる際に、リストのアイテムをハードコーディングではなく、DBから取得したデータをArrayList等に格納し、表示させたいと思っています。

この場合、ループでArrayListのアイテムを1件ずつ取り出して、JSP内の<select><option></option></select>に当て込む方法が良いのでしょうか?

ちなみに以下のテーブル内容で、リストボックスには“作業内容”を表示させて、選択されたときには、“作業コード”を取得させたいのですが、どのようにすれば良いでしょうか?

テーブル
--------------------
作業コード|作業内容
--------------------
0000000001|プログラミング
0000000002|実装
0000000003|テスト

よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

<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]%>;
とかで埋め込むこともできます。
内容を書き換えたりすることがあるのなら、スクリプトを併用したほうが良いですね。
    • good
    • 0
この回答へのお礼

ryou0607さん、ご回答ありがとうございます。

上の例はとてもよく分かりました。
スクリプトのほうは、残念ながらよく分かりませんでした。

お礼日時:2004/11/30 22:48

>>そのあとtempに“プログラミング”を代入してループを抜ける



そのとおりです。一般的には、ループを抜けたあとに最後の文字列をもう一度関数A()に渡しますね。
    • good
    • 1
この回答へのお礼

色々アドバイス頂きありがとうございました。
大変分かりやすかったです。

お礼日時:2004/12/02 14:48

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の連携はできるようになっておいた方が良いです。
    • good
    • 2
この回答へのお礼

丁寧な解説ありがとうございます。

サンプルの内容だとwhileの中で、関数Aに“0000000001”を引数として渡して、
そのあとtempに“プログラミング”を代入してループを抜ける
という理解で合っていますでしょうか?

お礼日時:2004/12/02 01:30

おそらく、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時などにこういった関数を呼ぶこともありますし、別フレームに対して値を飛ばすときなどに重宝します。
    • good
    • 0
この回答へのお礼

ryou0607さん、ありがとうございます。

現在、JavaScriptには触れずにサーブレット&JSPを学んでいるため、せっかく詳しい説明をして頂いたのに中々理解できません。
もう少し勉強してからJavaScriptも手を付けたいと思います。

もうひとつ疑問が出てきました。
見た目には内容、そして値には番号と内容の両方を入れて、値を取得したらsubstringメソッドで
分割してそれぞれ使用しようと思っているのですが、これって大丈夫な方法なんでしょうか?

何度もすみません

お礼日時:2004/12/01 17:17

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QJSPでタグでの selected 状態にするには・・・。

実は簡単なのかもしれないですが・・・。
変なとこで躓いています。

<SELECT>タグで15個の<OPTION>が入っているとします。
12番目の<OPTION>のやつをHTMLでいうところのselected状態にするにはどうしてやればいいですか?

宜しくお願いいたします。

Aベストアンサー

JavaScriptからselect要素の中の特定のoptionを選択状態にしたい場合は、

document.form名.select名.options[番号].selected= true;

でいけると思います。
ご質問のケースでは、12番目の要素を選択させると言うことですので、option要素の12番目を指定する意味で

document.form名.select名.options[11].selected= true;

とすれば良いと思います。 JavaScriptでも自動的に取得される要素の配列の連番は0から始まるので、12番目の要素を持つ配列の番号は11になることに気をつければ、問題ないでしょう。

参考になれば…

Qservletからjspへオブジェクトの配列情報を送る方法

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、各情報をsetする。
HttpServletRequestにsetAttributeでFileInfomation情報を付加し、
disp.jspへforwardする。

※以下の方法を考えています。
request.setAttribute("fileinfo1", fileinfo[0]);
request.setAttribute("fileinfo2", fileinfo[1]);
request.setAttribute("fileinfo3", fileinfo[2]);
・・・
(配列でsetAttributeできるのかわからなかったので、
 とにかくファイルの数分setAttributeしてみました)

getServletContext().getRequestDispatcher("/disp.jsp").forward(req, res)

わからないこと:
disp.jspでどのようにFileInfomationの情報を取得し、
内容を参照できるのかがよくわからないのです。
jspの暗黙オブジェクトrequestを使用して、request.getParameterをすると、
返ってくる値がStringのようなので、FileInfomationクラスにならないんですよね?

突っ込みどころ満載の質問かと思いますが、何かアドバイス頂ければと思います。
オブジェクトの配列をsetAttributeしてjspで読み出せる方法があれば、
それもご教授いただけますでしょうか。
よろしくお願いいたします。jsp難しいです・・・。

いつもお世話になっております。echo2002です。

さて、今回は以下のような処理を行いたいのですが、可能なのでしょうか?
”servletで作成したオブジェクトの配列をjspにforwardして表示させる”

こんなような処理を考えています。

構成:FileListServletクラス, FileInfomationクラス, disp.jsp

FileInfomationクラスではファイル名やファイルサイズなどの情報を持ち、
それぞれgetなどのアクセサメソッドを持つとします。

FileListServletクラスでの処理
FileInfomationクラスの配列を作成し、...続きを読む

Aベストアンサー

setなんちゃらメソッドで値を設定したら、getなんちゃらメソッドを呼べば良かったのです。つまり、set/get以下が同名のメソッド同士をセットで使えば良いのです。
今回の場合は、getAttributeメソッドですね。
戻り値はObjectですがこれはキャストすれば良いのです。
FileInfomation 変数 = (FileInfomation)request.getAttribute("fileinfo1");
てな具合です。

なお、getParameterメソッドは、クライアント(ブラウザ)から送信されたパラメータを取得するメソッドです。

さて、話を次の段階に進めて、配列を受け渡しできるか?となりますが、、できます。
サーブレット側で、
request.setAttribute("キー文字列", fileinfo);
として、JSP側で、
FileInfomation[] 変数 = (FileInfomation[])request.getAttribute("キー文字列");
とすれば、良いのです。

Qjava / jsp selectedについて

Formの<SELECT>について教えて下さい。

リストの内容はデータベースからjavaで取得し、Bという名前のArrayListに格納。それをフォームのセレクトボックスでjspで取得し表示しています。
やりたい事は、java側でAの名前でセットしたデータがBにあれば、セレクトボックスで選択した状態にしたいのですが、どうしてもうまくいきません。

以下のコードだと if (A.equals(B)) のところがおかしいようで、試しに if(A.equals("りんご"))の様にデータ名を明示的に書くとうまくいきます。
しかしそうすると今度は、セレクトボックスで"りんご"が選択された時にすべてのデータに selected が入り、セレクトボックスの最後のデータが選択状態になります。
悪いところだらけのコードのようです…。

すみませんがご教授お願い致します。

<%
 //キー Aで設定したデータを取得
String A = (String)request.getAttribute("A");
%>

<%
 //ArrayListに入っているデータをループで取得
 for (int i = 0; i < al.size(); i++) {

  HashMap hash = (HashMap)(al.get(i));
  String B = (String)hash.get("B");
%>

<option

<%
  //Bの値がAと同じであれば選択状態にする。
if (A.equals(B)) {
%>
selected
<%
}
%>
  value = <%= (String)hash.get("B") %>><%= (String)hash.get("B") %>

<%
}
%>

Formの<SELECT>について教えて下さい。

リストの内容はデータベースからjavaで取得し、Bという名前のArrayListに格納。それをフォームのセレクトボックスでjspで取得し表示しています。
やりたい事は、java側でAの名前でセットしたデータがBにあれば、セレクトボックスで選択した状態にしたいのですが、どうしてもうまくいきません。

以下のコードだと if (A.equals(B)) のところがおかしいようで、試しに if(A.equals("りんご"))の様にデータ名を明示的に書くとうまくいきます。
しかしそうすると今度...続きを読む

Aベストアンサー

見たところ、特に問題はないように思えます。
equalsで比較することが悪いということはないので、
やはりAとBの値が異なるんじゃないかと思いますが…
よーく見るとどっちかがtrimかかってなくて
後ろにスペースがあったとか。。。。

あと質問に関係ないですが、AとBを取るときに
nullが来る考慮がないのが気になりました。
(質問用だから入れてないだけなのかな?)

QJSPの処理の途中で、JavaScriptの処理をしたい

プログラムをJSPで記述している(<% %>タグ)のですが、
JavaScriptのalertやconfirmなどのポップアップするダイアログを
表示したいのです。それは可能なのでしょうか?

Aベストアンサー

No.2の回答に対する回答(変な日本語ですが)です。

JSPとJavaScriptの処理の行われる順番について考えていないと
エラーになることがありますよ。
大まかな流れは、
 JSPのソースをサーバ側で解釈、実行する(HTMLのソースを吐き出す)
  ↓
 クライアントに生成したソースを送信する
  ↓
 クライアント側のブラウザがソースを解釈する
  ↓
 ソースの中のJavaScriptを、ソースの上のほうから順次実行する
  ↓
 同時に、通常の表示(HTMLの解釈)も実行される

 と、こういう流れですので、例えば、JavaScriptで値を入力し、
JSPでその値を使おうとすると、エラーとなります。

 具体的にやりたいこと(やろうとしていること)を書いていただいたほうが
適切に回答できますが、上記が今考えられるエラーの原因です。

Qフォーム上で押されたボタンによってサーブレットの処理を変えたい

Urizakaです。
さて、さっそく質問です。
JSPの同一フォーム上に「登録」「修正」「削除」のボタンを置き、その押された
ボタンによってサーブレット内での処理が切り替わる(具体的には、違う
SQL文を実行し、違うJSPページをgetRequestDispatcherメソッドで生成
する)ようにしたいのですが、どのようにすればよいのでしょうか?
もちろんそれぞれの処理に対して別々のサーブレットを作り、javaScript
でそれぞれのサーブレットへ飛ぶように制御するという処理も考えたことは
考えたのですが、できれば一つのサーブレットで済ませたいと考えたもので
…宜しくお願いします。

Aベストアンサー

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=MySubmit>
</form>

<script language="JavaScript">
function func(MyCommand){
document.MyForm.MySubmit.value=MyCommand;
document.MyForm.submit();
}
</script>

■Servletでの処理
// リクエストの取得
String MyAction = req.getParameter("MySubmit");

// 処理の実行
if (MyAction.equals("Toroku")){...}
if (MyAction.equals("Shusei")){...}
if (MyAction.equals("Sakujo")){...}



---------------------------------------------------

こんな感じでどうでしょうか。
ちなみにこうやって書いておくと、フォームのボタンからじゃなくても
アンカーをクリックすることで同じ効果が出せそうな……

<a href="JavaScript:func('Toroku')">登録</a>

あ、でもまたボロが出そうなのでこの辺で(^_^;)

お恥ずかしい限りです。
前述の例、動くわけがありませんね(汗)

2つめの例、書きなおします。

---------------------------------------------------

■JSPのフォーム

<form name=MyForm action="<<サーブレットのURL>>" method=post>
<input type=button name=MyClick value=登録 onClick="func('Toroku');">
<input type=button name=MyClick value=修正 onClick="func('Shusei');">
<input type=button name=MyClick value=削除 onClick="func('Sakujo');">
<input type=hidden name=M...続きを読む

Qラジオボタンの選択肢をサーブレットで取得するには?

サーブレットの開発を行っていますが、ブラウザー側で
ラジオボタンを選択した際に何を選択したかのデータを取得したいのです。
(下記のHTMLで言えば、割引手形か、手形貸付か、証書貸付というのを取得したいのです)
パラメーターをサーブレットで受け取りたいのですが
うまくいきません
HTMLでHIDDENを使用するとか聞いたことはあるのですがどのようにコーディングすればいいんでしょうか?
よろしくお願いいたします。

<p>
<input type="radio" name="radiobutton" value="radiobutton">
割引手形 
<input type="radio" name="radiobutton" value="radiobutton">
手形貸付 
<input type="radio" name="radiobutton" value="radiobutton">
証書貸付
</p>

ブラウザー側からは
<form action="http://localhost/servlet/yuushi" method=post>
の指定を行っています。
サーブレットでの受け取り方を、
String p2=request.getParameter("radiobutton");
 とすると、p2=radiobuttonとデータがセットされました。

サーブレットの開発を行っていますが、ブラウザー側で
ラジオボタンを選択した際に何を選択したかのデータを取得したいのです。
(下記のHTMLで言えば、割引手形か、手形貸付か、証書貸付というのを取得したいのです)
パラメーターをサーブレットで受け取りたいのですが
うまくいきません
HTMLでHIDDENを使用するとか聞いたことはあるのですがどのようにコーディングすればいいんでしょうか?
よろしくお願いいたします。

<p>
<input type="radio" name="radiobutton" value="...続きを読む

Aベストアンサー

それぞれの項目の value を、ユニークにして下さい。例えば、

<input type="radio" name="radiobutton" value="1"> 割引手形 
<input type="radio" name="radiobutton" value="2"> 手形貸付 
<input type="radio" name="radiobutton" value="3"> 証書貸付

そうすれば、「手形貸付」を選択したときに

String p2 = request.getParameter("radiobutton");

とすれば、p2 は "2" になります。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング