- PR -

JSPでコンボボックス

1
投稿者投稿内容
Noda
常連さん
会議室デビュー日: 2005/06/14
投稿数: 21
投稿日時: 2005-08-24 15:31
現在PHPをJavaに移行してます。
その過程で、コンボボックスの処理が思うように行きませんので、みなさんのお力をお貸しください。

下記にPHPのソースと作成中のJavaのソースを書きます。

PHPソース

〜〜〜〜〜〜〜〜〜〜〜〜〜略〜〜〜〜〜〜〜〜〜

<SCRIPT LANGUAGE="JavaScript">
<!--
function ChooseBUILD(f){
f.srcflg.value ="0"
f.submit();
}

〜〜〜〜〜〜〜〜〜〜〜〜〜略〜〜〜〜〜〜〜〜

/* 実行 SQL文パース 建物 */
$sql_build = OCIParse($conn, "select tu_room.building,tu_jotaimeisyo.jotainm
from tu_room@$acts_sid,tu_jotaimeisyo@$acts_sid
where tu_jotaimeisyo.bunruicd='95' and tu_jotaimeisyo.kubuncd = tu_room.building
group by tu_room.building,tu_jotaimeisyo.jotainm
order by tu_room.building");

/* データベースカラムのディファイン */
OCIDefineByName($sql_build, "BUILDING", &$building);
OCIDefineByName($sql_build, "JOTAINM", &$jotainm);

/* SQL実行 */
if(!OCIExecute($sql_build)){
db_check_errors($php_errormsg);
$ora_err_code = db_error_code();
$ora_err_msg = db_error_msg();
$ora_err_src = db_error_source();
PopUP_ErrMsg();
exit;
}

print "<td bgcolor=#eeeeff>建 物 </td>";
print "<td bgcolor=#eeeeff><select name=\"build\" onChange=\"ChooseBUILD(this.form);\">\n";
print "<option value=\"\"></option>\n";
/* データフェッチ */
while(OCIFetch($sql_build)){
/* Optionタグの書込み */
if($build == $building)
print "<option selected value=\"".$building."\">".$jotainm."</option>\n";
else
print "<option value=\"".$building."\">".$jotainm."</option>\n";
}
print "</select></td>\n";

〜〜〜〜〜〜〜〜〜〜〜〜略〜〜〜〜〜〜〜〜〜〜〜

Javaのソース

〜〜〜〜〜〜〜〜〜〜〜〜〜略〜〜〜〜〜〜〜〜〜

<SCRIPT LANGUAGE="JavaScript">
<!--
function ChooseBUILD(f){
f.srcflg.value ="0"
f.submit();
}

〜〜〜〜〜〜〜〜〜〜〜〜〜略〜〜〜〜〜〜〜〜

<%
//建物取得
Vector Build = new Vector(); //返り値格納配列
String[] hbuilding = new String[10]; //建物コード格納配列
String[] hjotainm = new String[10]; //建物名称格納配列

Build = db.getBuild(conn);

//建物コード、建物名称を各配列に格納
String building = "";
String jotainm = "";
int buildingNO = 0;
int jotainmNO = 1;
int i = 0;

while(i < Build.size()/2){

//建物コード格納
//if(i==0){
//hbuilding[i] = "";
//}else{
building = (String)Build.get(buildingNO);
hbuilding[i] = building;

buildingNO = buildingNO+2;
//}

//建物名称格納
//if(i==0){
// hjotainm[i] = "";
//}else{
jotainm = (String)Build.get(jotainmNO);
hjotainm[i] = jotainm;

jotainmNO = jotainmNO+2;
//}
i++;
}
%>
<td bgcolor=#eeeeff>建物 </td>
<td bgcolor=#eeeeff>
<select name="build" onChange="ChooseBUILD(this.form)">
<option value=""></option>
<%
//建物名称展開
String build = "";
int j = 0;

for(j=0; j<hbuilding.length; j++){
if(build.equals(hbuilding[j])){
%>
<option selected value="<%=hbuilding[j]%>"><%=hjotainm[j]%></option>
<%
}else{
%>
<option value="<%=hbuilding[j]%>"><%=hjotainm[j]%></option>
<%
}
}
%>
</select>
</td>

〜〜〜〜〜〜〜〜〜〜〜略〜〜〜〜〜〜〜〜〜〜〜〜

という感じに作成していますがうまくいきません。
仕様はSelectでイベントをおこし、イベントが起きた時点でのValueを使用して<Option Selected・・・・>にそのValueの内容だけ表示させ、その他は<Option・・・・>に表示させるという感じです。
また、そのValueの内容を違う場所でもつかうようにしたのですが・・・。

アドバイスお願いします。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-08-24 16:02
こんにちわ。

具体的にどのようにうまく行かないの
でしょうか。

Selectでイベントをおこすことがうまくいかない?
<Option Selected・・・・>にそのValueの内容だけ表示させ、その他は<Option・・・・>に表示させるのがうまくいかない?

また、現状どのように動作してしまっているか。

その辺を明らかにするとわかりやすいかもしれません。

[ メッセージ編集済み 編集者: (株)ぽち 編集日時 2005-08-24 16:02 ]
冬寂
ぬし
会議室デビュー日: 2002/09/17
投稿数: 449
投稿日時: 2005-08-24 16:14
何がうまくいかないのか自体がよく分かりませんが、とりあえず
引用:

仕様はSelectでイベントをおこし、イベントが起きた時点でのValueを使用して<Option Selected・・・・>にそのValueの内容だけ表示させ、


この場合の「イベント」というのが何か分からないし、選択された場合にその選択された値だけ表示されている、というのは select tag で表示されるリストボックスの動作そのままなのでは?

あと、f.srcflg というのが何か分かりません。
Noda
常連さん
会議室デビュー日: 2005/06/14
投稿数: 21
投稿日時: 2005-08-24 16:45
f.srcflg は無視してください。
やりたいことは、<select>タグのなかの<option・・・>の内容が選択されたと同時に、
その選択された内容のvalueを使用して<option selected・・・>に表示させたいということです。
その時、選択された内容以外は<option・・・>に通常どうり表示させたいのです。

現在、onChange="ChooseBUILD(this.form)が実行されると、アドレスーに内容が表示されています。その内容の一部を使用したいんです。
http://localhost:9080/Kgu_java/kya_0050.jsp?nendo=2005&build=008&room=&srcflg=0&chgflg=
のbuild=008だけ使用したいんですが、どうやって取得できるのか・・・
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-08-24 17:40
それはつまり、select云々というよりも
リクエストパラメータの値の取り方がわ
からないということでしょうか?

request.getParameter("build")ではダメ
なのでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)