- PR -

【JSP】ユーザが選んだ情報を元に画面の内容を変えたい

投稿者投稿内容
yuki
会議室デビュー日: 2005/06/08
投稿数: 11
投稿日時: 2005-07-14 14:46
Javaの初心者です。

今、このような環境でWebアプリケーションの
開発を行っております。

Eclipse 2.1.1
Tomcat 5.0.28
Windows 2000
J2sdk 1.4.2

HTMLのSelectタグでユーザが選んだ情報を元に、
同じページでも出力される項目を表示・非表示にする
プログラムをJSPで作っているのですが、
ユーザが選んだ値を引き渡す方法が分からず、困っています。

表示・非表示は、項目によって異なるため、
そのフラグ情報をDBとしてテーブルに登録しています。
(テーブルのイメージ  下の【JSPの概要】を参考にして頂きたいです)
Optionのvalue |  項目@ 項目A 項目B 項目C

A | ○   ×    ○ ○
B | ×   ×    × ○
C | × ○ ○ ○   

この情報を、Javaのクラスでテーブルを読み込み、
一件だけ取得できるような仕組みにしたいと考えています。

処理の流れはこのような感じにしたいと思っています。

【JSP】(HTML・JavaScript)ユーザーがSelectで選んだ情報を取得
        (Javaでテーブル読み込み時のキー項目にするため)
          ↓
【Java】取得した値を元にテーブルを読み込み一件のフラグデータを取得
          ↓
【JSP】フラグデータを元に画面上の項目を表示・非表示にする

JSPのソースはこのような感じです。

【JSPの概要】

<html>
〜ユーザが選ぶ情報です〜
<select name="select" onChange="ab(this.value);" >
<option value='A' >test1</option>
<option value='B' >test2</option>
<option value='C' >test3</option>
</select>


〜〜表示内容を変えたい部分を書き込む所です〜〜
<div id=out />

</html>

<script lnaguage="JavaScript">
function ab(aval){
このavalをJavaのクラスに引き渡したいのです。

var str;

<% 画面を制御する情報を取得するJAVAのクラス

getData(ユーザがSelectで選んだ情報);
Vector vecData = 取得したデータ;


str = "<p>表示を変えたい内容</p> "

out.innnerHTML = str;

}

もし、どなたか良い方法をご存知の方がいらっしゃいましたら、
ご教授宜しくお願い致します。
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-07-14 15:47
こんにちわ。

一番知りたい、わからないこは「selectの値の取り方」でしょうか?
であれば、HttpServletRequest#getParameterでご希望の処理が可能
と思います。

他に問題はありますでしょうか。

もしかしてページ更新なしでselectの値を渡したいとかってこと
ですかね?
yuki
会議室デビュー日: 2005/06/08
投稿数: 11
投稿日時: 2005-07-14 16:09
(株)ぽち さん、
早速のご返答ありがとうございます。

そうです。一番知りたいのは、
値の引き渡し方です。

更新といいますか、submitをしない状態で
onchangeしたときに値の取得をして、
引き渡したいと考えています。

getParameter()はsubmitしないと
使えないんですよね?
さる
ぬし
会議室デビュー日: 2005/07/14
投稿数: 276
お住まい・勤務地: 実家戻ったw
投稿日時: 2005-07-14 16:36
Javaを使ってサーバ側に渡さずに動的に変更したいという事なんですかねぇ〜。
無茶なw

[ メッセージ編集済み 編集者: さる 編集日時 2005-07-14 16:37 ]
(株)ぽち
ぬし
会議室デビュー日: 2002/09/10
投稿数: 376
投稿日時: 2005-07-14 17:31
ページ更新なしでリアルタイム制御を行う場合は
通常のHTMLレベルでは不可能だと思います。

MacromediaFlexなどのリッチクライアントを使用
すれば簡単に実現できますが、jsp,servletでは
無理でしょう。

要件的にページ更新はありえないでしょうか?
selectする度に同じ画面にフォワード(更新)する
ことで機能としては実現できますが、これでは
ダメな理由があったりしますか?
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2005-07-14 17:44
最近流行のAjaxをServletと組み合わせれば実現できそうな気がします。

実際にやったことはないので詳しくは知りませんけど。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2005-07-14 17:53
予め全データをHTMLやJavaScriptの変数に用意しておくとか、Ajaxですかね。
Ajaxって、JavaScriptがわかればそんなに難しくないですよ。
昔からあるのに、最近Ajaxという名前になったのが不思議です。
takashi
ベテラン
会議室デビュー日: 2004/02/12
投稿数: 79
お住まい・勤務地: 東京
投稿日時: 2005-07-14 17:55
こんにちは。

POSTなしで、ブラウザ上で全部やろうとすると、
事前にサーバ側から値を取得しておいてJavaScriptの変数に

var koumoku1 = <%= ((KoumokuData)request.getParameter("XXX")).getKoumoku1() %>;

のように全部セットしておいて、あとはJavaScript駆使でできますか??
例えば
http://www.openspc2.org/reibun/javascript/mouse/006/
のような感じでどうでしょう?

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