とっておきの手土産を教えて

urizakaです。
現在、Jbuilder+SQL-Serverでプログラムを作っているのですが、そのなかで
SELECTタグで選択できるデータはDBから持ってきたものとし、尚且つそのタグ
部分に表示される初期値がDBから持ってきたものとしたいのですが、これは
どのようにすればよいのでしょうか?
(DBデータ)
 データベーステーブル名:m_Auth
 フィールド名  code_auth name_auth
1 責任者
          2 リーダー
         3 一般メンバー

 データベーステーブル名:m_staff
 フィールド名  code_staff name code_auth
1 urizaka 1
2 fukutome 2
3 fujiwara 3
4 isezaki 3

(JSPソースコードよりSELECT部分のみ抜粋)
  <SELECT name = "s_code_auth">
<%
int i;
 /** tantoushaallbeanはこのJSPで使うメソッドが入ったBeanファイルです**/
for( i = 0; i < tantoushaallbean.getcode_auth().size(); i++ ){
out.println("<option value=\"" +
/** 下記はcode_authを全て持ってくるメソッドです**/
tantoushaallbean.getcode_auth().elementAt(i) + "\">" +
/** 下記はname_authを全て持ってくるメソッドです**/
tantoushaallbean.getnameauth().elementAt(i) + "</option>" );
}
%>
</SELECT>

現在では、SELECTタグで選択できるデータはDBから持ってきたものが表示
されますが、初期状態はDB「m_staff」のcode_authがどの値であろうと、
code_authが1の責任者になっている状態です。
 すみませんが、上記の件について方法をご存知の方がいらっしゃったら
ぜひ宜しくお願いします。

A 回答 (3件)

こんにちは。


intをStringに変換。お好きな方法でどうぞ。
・String s = "" + int;
・String s = Integer.toString(int);
・String s = String.valueOf(int);

Stringをintに変換。
・int i = Integer.parseInt(String);

ちなみにintとIntegerは異なるものですのでご注意下さい。
    • good
    • 1
この回答へのお礼

urizakaです
参考になりました。
ありがとうございます。

お礼日時:2001/07/06 10:07

こんにちは。


A.equals(B)はオブジェクトの比較ですのでintの比較では使用できません。
if文ではm_staff.code_authと一致する<OPTION>タグにSELECTEDを付ける
のですから、

・Stringの場合
if([m_staff.code_auth].equals([m_auth.code_auth])){}

・intの場合
if([m_staff.code_auth] == [m_auth.code_auth]){}

[]内はそれぞれの値

となると思うのですが...
間違っていたらごめんなさい。

この回答への補足

urizakaです
なるほど、intとStringだと比較の仕方が違うと…
でも、この場合はメソッドで持ってきた値はStringで、変数iは
intなので、普通の方法で比較はできないことになってしまうんですよ
ね。
では、intの値をStringと比較したい場合はどうするのでしょう?
(いや、原則としておかしいことではありますが。確か、Stringをintに、
あるいはその逆にCastすることはできなかったと思いますし…)

すみませんが、この件についてご存知でしたら教えてください。

補足日時:2001/07/05 18:18
    • good
    • 1

こんにちは。


初期表示したい<OPTION>タグにSELECTED属性を付けて下さい。

<SELECT name = "s_code_auth">
<OPTION VALUE="">xxx</OPTION>
<OPTION VALUE="" SELECTED>yyy</OPTION>
<OPTION VALUE="">zzz</OPTION>
</SELECT>

yyyが初期選択されます。

この回答への補足

urizakaです

なるほど、SELECTEDですね。
ということはループ文を使って、該当するものが現れるまで処理を続ければ
…と思い、以下のようなソースコードを書いてみたのですが

<%
int i;
for( i = 0; i < tantoushaallbean.getcode_auth().size(); i++ ){
out.print("<option value=\"");
out.print(tantoushaallbean.getcode_auth().elementAt(i));
if (parseInt(tantoushaallbean.gets_code_auth()).equals(i)){
out.print("selected");
}
out.print("\">");
out.print(tantoushaallbean.getauthname().elementAt(i));
out.print("</option>\n");
}
%>
 しかし、parseInt(tantoushaallbean.gets_code_auth()).equals(i)
でトラブルが起き、処理が上手くいきませんでした。
 他にも
 i == parseInt(tantoushaallbean.gets_code_auth())
や、一度別のテキストボックスに入れて処理してみるという方法も試し
ましたが駄目でした…
 すみませんが引き続き、分かる方どうぞ教えてください
 宜しくお願いします。

補足日時:2001/07/05 16:46
    • good
    • 0

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

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


おすすめ情報

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