評価 0 javaScriptとjavaでのデータの受け渡しか、JAVAでプルダウンメニュー項目の変更 今、サーブレット・JSPでHPを作成していて、1つのJSPの中で、2つのプルダウンメニューを連携して、1つ目のプルダウンメニューで(項目はDBからとってくる)選択されたものをキーにDBを検索し、検索結果を、2つ目に表示し、決定ボタンを押す事により、2つ目で選択されたものをキーにDBからデータを検索して表示するしたいのですが、2つ目の項目を動的に変更するのは、javaScriptなら、http://mugi.cc/js/991130.htmのソースか、http://www.hajimeteno.ne.jp/dhtml/dist/js49.html等を参考に変更だけなら出来るのですが、項目の変更をjavaScriptでやるなら、JSP(java部分)で1つ目の項目をDBか取って来た、データを、javaScriptに渡して1つ目の項目を表示し、尚且つ選択された項目データをJSP(java部分)に渡して、キーとしてDB検索しまたそのデータをjavaScriptに渡して動的に変更表示をすると考えています。どうしたら、javaScriptとjavaでのデータの受け渡しが出来るのかと、もしくは、javaScriptで行っている動的な項目変更を、javaでする方法を教えてください。 15件の回答 評価 0 >どうしたら、javaScriptとjavaでのデータの受け渡しが出来るのかとそんな風に考える必要はないのでは?1つ目の項目を選択した後にボタンを押して2つ目の項目のリストをもらう。そこにはJavaScriptとか出て来る必要はない筈です。でもたぶんボタンを押すとかというのは面白くないってことでしょうから、ボタンを押す代わりをJavaScriptに助けてもらうように手を加える。とかいう風に考えてみては?また、そういった風に1つ1つ順々に動作を確認しながら進めていけば、より確実だろうと思いますよ。 評価 0 >1つ目の項目を選択した後にボタンを押して2つ目の項目のリストをもらう。>そこにはJavaScriptとか出て来る必要はない筈です。今、java・サーブレット・JSP勉強をしていて、その勉強の中で、ある人から出された課題でなので、検索ボタンを押してから、2つ目のプルダウンメニューを変化させるというものだと、今の自分でもすぐ作れますし、本当の仕事として作成する中では、このような事も要求されので、出された課題なので。自分でも考え探してみたのですが、何らかの方法で前回説明した事をやって様な記事を見つけたのですが核心部分がなくって、こちらで聞いてみようと思ったのです。 評価 0 その課題は、いま流行りのAjaxを利用しなさいということかも知れないですね。Ajaxを使って画面遷移なしにサーブレットなりJSPを呼び出して結果をJavaScriptで書き換えるということになると思います。Ajaxを調べてみてはいかがでしょうか 評価 0 1. プルダウンが変更された時点でformをsubmitして、画面をリロードする。2. 表示前に全部DBから引っ張っておき、JavaScriptでそれらの配列からselectして別のプルダウンを書き換える。3. AJAXで選択されたプルダウンの値を送り、別のプルダウンを書き換える。 評価 0 初回アクセス時に子プルダウンの全データをHTMLで持たせておき、親プルダウンの選択時にJavaScriptで子プルダウンの表示を切り替えるのもアリです。通信が無いので、使用感は抜群です。ただし、この方法は子プルダウンに対応するレコードの数が(将来的に見ても)少ない場合に限定されます。データが多い場合は、Ajaxか通常のリクエスト処理にするしかないでしょう。 評価 0 データが多い場合ともうひとつ。データの変更を考慮する必要がある場合も。最初に一覧を取得する方式だと、検索するタイミングが遅れれば遅れるほど、最新のDBとの差異が生じる可能性があります。その差異を許容するのかどうか、というのも要件に拠ります。 評価 0 皆さんありがとうございます。tamaさんのいうAJAXって非同期のXMLを利用したJavaScriptでしたっけ、流行っているとはいえ、正直こんなに早くAjaxという言葉が関って来るとは思いませんでした、JavaScriptさえ全く知らないのにAjaxですか、明日JavaScriptの本を買いに行こうと思ってたのですが、Ajax込みで探さないと駄目そうですかね、mioさんの言う、「表示前に全部DBから引っ張っておき、JavaScriptでそれらの配列からselectして別のプルダウンを書き換える。」今悩んでいるのはモロこの部分なんですよ、DBから引っ張ってくるのは、javaですよね、Javaで引っ張ってきたデータをどの様に、JavaScriptに渡し、どの様に抜き出すかなんです、この様なPGの時は、いつもはArraylistを使う事が多いいのですが、配列なら、DBデータはvarcharなのでString辺りで考えているのですが、Javaの配列に入れて、JavaScriptで、その配列から抜き出せるのですか?その方法教えてください。これさんの方法は今の段階ではデータ量も少ないので良いのですが、将来的にその方法で慣れてしまうと、辛いですよね?そうなると、やっぱりAjaxですか、自分でもしらべますが、よければ、Ajaxこんな感じのソースになるみたいなのを教えて入ただけ無いでしょうか、よろしくお願いします。 評価 0 >非同期のXMLを利用したJavaScriptでしたっけXMLは、やりかたのうちの一つです。非同期でテキストをやりとりするのが一番シンプルな使い方で、そのテキストをXMLと見立てて扱うこともできる、ということです。また、最近はJSONという記法も、良く使われるようになってきました。私はこれが一番好きです。>JavaScriptで、その配列から抜き出せるのですか?「JavaScriptに直接渡そう」とするから、分からなくなるのです。できませんので。そうではなく、「JavaScriptで配列となる文字列を書き出す」と考えてみてください。例えばArrayListに[1,2,3,4,5]という値が入っているとすれば、<script>タグのなかにvar data = [1,2,3,4,5];という一文を書き出すことで、JavaScriptの初期実行時にJavaScriptの配列が生成されます。>Ajaxこんな感じのソースになるみたいなのを教えて入ただけ無いでしょうか、最近は、サンプルはいくらでも転がっています。またAJAXをオブジェクトとして使えるJavaScript用ライブラリもいろいろ出ていますので、それらを使うのも手です。中にはJavaのソースを書いて、コンパイルしてJavaScriptを生成するようなのも、ありますよ。 評価 0 ポポさんの質問内容に疑問ですけど・・。この質問はJSPを再呼び出しせずに実現したいとまで思っています?>その勉強の中で、ある人から出された課題でなのでその課題の主旨は確認されたのかなあ?と思いますが・・課題を元に適当に遊んでいるのならいいのでしょうけど。 評価 0 まあさん、遊んでいるわけではないのです。>その課題の主旨は確認されたのかなあ?一様サーブレット・JSPの勉強なのですが、課題の趣旨が、会社の中で行われている様な形式でという事なので、仕様書が渡せれて、その内容通りのサイトを作る事です、その仕様書の中のプルダウンメニューに関しての仕様で、1.ジャンルプルダウンメニューの項目は、DBから取得して項目とする、2.作家名(本)プルダウンメニューの項目は、1つ目で選択された項目をキーにしてDBから絞り込んだデータを取得して項目とする、1と2のメニューが選択され、決定ボタンを押れることで、作家名プルダウンメニューで選択された項目をキーにして、DBを検索して、発売されている本の情報をすべて表示、DBテーブルジャンル |作家名 |本名 |画像パス-----------------------------------------PG |A |AA |・・・・・PG |B |BB |・・・・・サイエンス|C |CC |・・・・・・本当は、個々のデータは、もっとあるのですが省略します。プルダウンメニューの項目をDBから取得して表示するのは、DBデータを増やすだけで、各プルダウンメニューの項目を増やす事が出来るからです。mioさん言う、>「JavaScriptで配列となる文字列を書き出す」>、<script>タグのなかに、var data = [1,2,3,4,5];と言う方法は、2つ目の項目を換える処理(JavaScript)で、DBから取ってきたデータに準じて書き直すという事ですよね、このサイトに説明があるように、↓http://www.openspc2.org/reibun/javascript/form_selectmenu/015/index.htmlその方法であれば出来ているのですが2つ目の項目もDBから取って来ないと、上記でも書きましたが、「プルダウンメニューの項目をDBから取得して表示するのは、DBデータを増やすだけで、各プルダウンメニューの項目を増やす事が出来るからです。」と言う事にならないの使えません。この部分がなければ、mioさんの方法で、1つ目の選択した項目によって、2つ目のプルダウンメニューの項目をかえるのはできているのです。 評価 0 >このサイトに説明があるように、↓>その方法であれば出来ているのですが>この部分がなければ、mioさんの方法で、1つ目の選択した項目によって、2つ目のプルダウンメニューの項目をかえるのはできているのです。できたというものについて、それでいいのか確認はしてみたのでしょうか。>会社の中で行われている様な形式でという事なので、会社・プロジェクトの方針に沿った形で進めないと意味ないと思います。それが仕事というものだろうと思うけど・・。どういった形のものが求められているのかを確認しないで勝手に進めても、またそれがより高度だったり、進んだものだったとしても会社やプロジェクトの考えているものと外れていてはダメなんじゃないでしょうか。何を求められているのかが大切なのであって、そこを勝手に突っ走るのは、なおさら遊んでるようなものでもありそうですけど・・。 評価 0 今出されている課題に関しては、すべて課題に沿ったものであり、まあさんの言う事に対しては全て確認済みです。要求されている物を実行しようと調べているのであって、勝手に突っ走っているわけではありません。 評価 0 つまり、先に挙げたような簡単な?作りだと、ダメだと言われたということ。Ajaxとか使わないきゃならないのか・・とか言っていたのが、実はそういう課題だったということ。ということなのでしょうか。やりとりの範囲では状況がよく飲み込めないですけど・・。JavaとJavaScriptの間での受け渡しとかいうのも、JSPでタグを吐き出してやればJavaScriptから普通に扱えるのではないか?とも思ったのですけど、ポポさんの解釈としてのものとかではなく、課題としてそういう表現として出ていたもので、そんな単純なことを求めている課題ではなかったということなんでしょうか。 評価 0 >2つ目の項目もDBから取って来ないと、うーむ?1つ目の項目を全取得してその内容でJavaScriptの配列を作り、かつその1つ1つについて2つ目の項目を取得して、それぞれにJavaScriptの配列を作ればいいわけですが。submitするにせよ、AJAXで作るにせよ、大きく違うのはDBを引くタイミングだけです。>まあさんの言う事に対しては全て確認済みです。はたから見ていると、これは疑問ですね。そうであれば、こんなにやりとりをせずに済んでいるはずです。もう一度頭の中で整理して、その課題とやらの仕様をしっかり書き出してみてはどうですか。そのときそのときで思いついたことだけを書いても、読み手には伝わらないものです。 評価 0 Ajaxを簡単に利用するにはライブラリを使えばいいのですが・・ライブラリが使えるという前提の話ですがPrototype JavaScript frameworkを使った場合Ajax.Updaterでリクエスト及びHTMLの書き換えを行う。または Ajax.Requestで結果を受け取りJavaScriptで自分でobj.innerHTML等で書き換えるになります。まあさんの言われるようにJSPで必要なHTMLタグそのものを出力してAjax.Updaterで置き換えてやるのが一番シンプルだと思います。DBうんぬんについては良く分かりませんが、必要部分だけ出力するJSPなりサーブレットを書いて呼び出すだけです。よく問題になるのは文字化けですが、UTF-8で出力するようにすれば文字化けは起こりません。ライブラリが使えない場合、ライブラリ部分を自作する必要がありますが、サンプルはごろごろ転がっているので問題ないでしょう。 質問から6ヶ月以上経過しているので、回答を書き込むことはできません。 質問一覧にもどる
評価 0 >どうしたら、javaScriptとjavaでのデータの受け渡しが出来るのかとそんな風に考える必要はないのでは?1つ目の項目を選択した後にボタンを押して2つ目の項目のリストをもらう。そこにはJavaScriptとか出て来る必要はない筈です。でもたぶんボタンを押すとかというのは面白くないってことでしょうから、ボタンを押す代わりをJavaScriptに助けてもらうように手を加える。とかいう風に考えてみては?また、そういった風に1つ1つ順々に動作を確認しながら進めていけば、より確実だろうと思いますよ。
評価 0 >1つ目の項目を選択した後にボタンを押して2つ目の項目のリストをもらう。>そこにはJavaScriptとか出て来る必要はない筈です。今、java・サーブレット・JSP勉強をしていて、その勉強の中で、ある人から出された課題でなので、検索ボタンを押してから、2つ目のプルダウンメニューを変化させるというものだと、今の自分でもすぐ作れますし、本当の仕事として作成する中では、このような事も要求されので、出された課題なので。自分でも考え探してみたのですが、何らかの方法で前回説明した事をやって様な記事を見つけたのですが核心部分がなくって、こちらで聞いてみようと思ったのです。
評価 0 その課題は、いま流行りのAjaxを利用しなさいということかも知れないですね。Ajaxを使って画面遷移なしにサーブレットなりJSPを呼び出して結果をJavaScriptで書き換えるということになると思います。Ajaxを調べてみてはいかがでしょうか
評価 0 1. プルダウンが変更された時点でformをsubmitして、画面をリロードする。2. 表示前に全部DBから引っ張っておき、JavaScriptでそれらの配列からselectして別のプルダウンを書き換える。3. AJAXで選択されたプルダウンの値を送り、別のプルダウンを書き換える。
評価 0 初回アクセス時に子プルダウンの全データをHTMLで持たせておき、親プルダウンの選択時にJavaScriptで子プルダウンの表示を切り替えるのもアリです。通信が無いので、使用感は抜群です。ただし、この方法は子プルダウンに対応するレコードの数が(将来的に見ても)少ない場合に限定されます。データが多い場合は、Ajaxか通常のリクエスト処理にするしかないでしょう。
評価 0 データが多い場合ともうひとつ。データの変更を考慮する必要がある場合も。最初に一覧を取得する方式だと、検索するタイミングが遅れれば遅れるほど、最新のDBとの差異が生じる可能性があります。その差異を許容するのかどうか、というのも要件に拠ります。
評価 0 皆さんありがとうございます。tamaさんのいうAJAXって非同期のXMLを利用したJavaScriptでしたっけ、流行っているとはいえ、正直こんなに早くAjaxという言葉が関って来るとは思いませんでした、JavaScriptさえ全く知らないのにAjaxですか、明日JavaScriptの本を買いに行こうと思ってたのですが、Ajax込みで探さないと駄目そうですかね、mioさんの言う、「表示前に全部DBから引っ張っておき、JavaScriptでそれらの配列からselectして別のプルダウンを書き換える。」今悩んでいるのはモロこの部分なんですよ、DBから引っ張ってくるのは、javaですよね、Javaで引っ張ってきたデータをどの様に、JavaScriptに渡し、どの様に抜き出すかなんです、この様なPGの時は、いつもはArraylistを使う事が多いいのですが、配列なら、DBデータはvarcharなのでString辺りで考えているのですが、Javaの配列に入れて、JavaScriptで、その配列から抜き出せるのですか?その方法教えてください。これさんの方法は今の段階ではデータ量も少ないので良いのですが、将来的にその方法で慣れてしまうと、辛いですよね?そうなると、やっぱりAjaxですか、自分でもしらべますが、よければ、Ajaxこんな感じのソースになるみたいなのを教えて入ただけ無いでしょうか、よろしくお願いします。
評価 0 >非同期のXMLを利用したJavaScriptでしたっけXMLは、やりかたのうちの一つです。非同期でテキストをやりとりするのが一番シンプルな使い方で、そのテキストをXMLと見立てて扱うこともできる、ということです。また、最近はJSONという記法も、良く使われるようになってきました。私はこれが一番好きです。>JavaScriptで、その配列から抜き出せるのですか?「JavaScriptに直接渡そう」とするから、分からなくなるのです。できませんので。そうではなく、「JavaScriptで配列となる文字列を書き出す」と考えてみてください。例えばArrayListに[1,2,3,4,5]という値が入っているとすれば、<script>タグのなかにvar data = [1,2,3,4,5];という一文を書き出すことで、JavaScriptの初期実行時にJavaScriptの配列が生成されます。>Ajaxこんな感じのソースになるみたいなのを教えて入ただけ無いでしょうか、最近は、サンプルはいくらでも転がっています。またAJAXをオブジェクトとして使えるJavaScript用ライブラリもいろいろ出ていますので、それらを使うのも手です。中にはJavaのソースを書いて、コンパイルしてJavaScriptを生成するようなのも、ありますよ。
評価 0 ポポさんの質問内容に疑問ですけど・・。この質問はJSPを再呼び出しせずに実現したいとまで思っています?>その勉強の中で、ある人から出された課題でなのでその課題の主旨は確認されたのかなあ?と思いますが・・課題を元に適当に遊んでいるのならいいのでしょうけど。
評価 0 まあさん、遊んでいるわけではないのです。>その課題の主旨は確認されたのかなあ?一様サーブレット・JSPの勉強なのですが、課題の趣旨が、会社の中で行われている様な形式でという事なので、仕様書が渡せれて、その内容通りのサイトを作る事です、その仕様書の中のプルダウンメニューに関しての仕様で、1.ジャンルプルダウンメニューの項目は、DBから取得して項目とする、2.作家名(本)プルダウンメニューの項目は、1つ目で選択された項目をキーにしてDBから絞り込んだデータを取得して項目とする、1と2のメニューが選択され、決定ボタンを押れることで、作家名プルダウンメニューで選択された項目をキーにして、DBを検索して、発売されている本の情報をすべて表示、DBテーブルジャンル |作家名 |本名 |画像パス-----------------------------------------PG |A |AA |・・・・・PG |B |BB |・・・・・サイエンス|C |CC |・・・・・・本当は、個々のデータは、もっとあるのですが省略します。プルダウンメニューの項目をDBから取得して表示するのは、DBデータを増やすだけで、各プルダウンメニューの項目を増やす事が出来るからです。mioさん言う、>「JavaScriptで配列となる文字列を書き出す」>、<script>タグのなかに、var data = [1,2,3,4,5];と言う方法は、2つ目の項目を換える処理(JavaScript)で、DBから取ってきたデータに準じて書き直すという事ですよね、このサイトに説明があるように、↓http://www.openspc2.org/reibun/javascript/form_selectmenu/015/index.htmlその方法であれば出来ているのですが2つ目の項目もDBから取って来ないと、上記でも書きましたが、「プルダウンメニューの項目をDBから取得して表示するのは、DBデータを増やすだけで、各プルダウンメニューの項目を増やす事が出来るからです。」と言う事にならないの使えません。この部分がなければ、mioさんの方法で、1つ目の選択した項目によって、2つ目のプルダウンメニューの項目をかえるのはできているのです。
評価 0 >このサイトに説明があるように、↓>その方法であれば出来ているのですが>この部分がなければ、mioさんの方法で、1つ目の選択した項目によって、2つ目のプルダウンメニューの項目をかえるのはできているのです。できたというものについて、それでいいのか確認はしてみたのでしょうか。>会社の中で行われている様な形式でという事なので、会社・プロジェクトの方針に沿った形で進めないと意味ないと思います。それが仕事というものだろうと思うけど・・。どういった形のものが求められているのかを確認しないで勝手に進めても、またそれがより高度だったり、進んだものだったとしても会社やプロジェクトの考えているものと外れていてはダメなんじゃないでしょうか。何を求められているのかが大切なのであって、そこを勝手に突っ走るのは、なおさら遊んでるようなものでもありそうですけど・・。
評価 0 今出されている課題に関しては、すべて課題に沿ったものであり、まあさんの言う事に対しては全て確認済みです。要求されている物を実行しようと調べているのであって、勝手に突っ走っているわけではありません。
評価 0 つまり、先に挙げたような簡単な?作りだと、ダメだと言われたということ。Ajaxとか使わないきゃならないのか・・とか言っていたのが、実はそういう課題だったということ。ということなのでしょうか。やりとりの範囲では状況がよく飲み込めないですけど・・。JavaとJavaScriptの間での受け渡しとかいうのも、JSPでタグを吐き出してやればJavaScriptから普通に扱えるのではないか?とも思ったのですけど、ポポさんの解釈としてのものとかではなく、課題としてそういう表現として出ていたもので、そんな単純なことを求めている課題ではなかったということなんでしょうか。
評価 0 >2つ目の項目もDBから取って来ないと、うーむ?1つ目の項目を全取得してその内容でJavaScriptの配列を作り、かつその1つ1つについて2つ目の項目を取得して、それぞれにJavaScriptの配列を作ればいいわけですが。submitするにせよ、AJAXで作るにせよ、大きく違うのはDBを引くタイミングだけです。>まあさんの言う事に対しては全て確認済みです。はたから見ていると、これは疑問ですね。そうであれば、こんなにやりとりをせずに済んでいるはずです。もう一度頭の中で整理して、その課題とやらの仕様をしっかり書き出してみてはどうですか。そのときそのときで思いついたことだけを書いても、読み手には伝わらないものです。
評価 0 Ajaxを簡単に利用するにはライブラリを使えばいいのですが・・ライブラリが使えるという前提の話ですがPrototype JavaScript frameworkを使った場合Ajax.Updaterでリクエスト及びHTMLの書き換えを行う。または Ajax.Requestで結果を受け取りJavaScriptで自分でobj.innerHTML等で書き換えるになります。まあさんの言われるようにJSPで必要なHTMLタグそのものを出力してAjax.Updaterで置き換えてやるのが一番シンプルだと思います。DBうんぬんについては良く分かりませんが、必要部分だけ出力するJSPなりサーブレットを書いて呼び出すだけです。よく問題になるのは文字化けですが、UTF-8で出力するようにすれば文字化けは起こりません。ライブラリが使えない場合、ライブラリ部分を自作する必要がありますが、サンプルはごろごろ転がっているので問題ないでしょう。