• ベストアンサー

struts 2つの選択肢(select)の連動

struts 初心者です。 今strutsを使ってシステム作成してるんですが、壁にぶつかってます。 行いたい処理は、2つある選択肢(select)で、一つ目のデータが選択されたら、関連する内容のデータを、もう一つの選択肢に表示させるようにしたいです。動的にっていうみたいですが。。 データの件数が多いので、一つ目のデータが選ばれたら、DBに接続して関連するデータを取得するみたいな感じで考えているのですが、方法が全くわかりません。 分かる方がいましたら、情報ください。 宜しくお願いします。。。。。。 図図しいお願いかもしれませんが、サンプルとか載せていただければ、ものすごくありがたいです。

  • Java
  • 回答数4
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.2

それでは最初にOracleでよくサンプルにある HR.EMPLOYEE表をSELEC文で表示するJSPのソースを ご紹介します。 使用しているOracleは10gXEバージョンです。 <%@ page contentType="text/html;charset=Shift_JIS" %> <%@ page import="java.sql.*" %> <% // ログインに必要な情報 String user = "system"; // ユーザ名 String pass = "XXXXXXX"; // パスワード String database = "XE"; // データベース String server = "127.0.0.1"; System.out.println ("Connecting..."); // 接続およびSQL実行 try { // ドライバクラスをロード Class.forName("oracle.jdbc.driver.OracleDriver"); // データベースへ接続 Connection con = DriverManager.getConnection ("jdbc:oracle:thin:@" + server + ":1521:"+ database ,user ,pass); // ステートメントオブジェクトを生成 Statement stmt = con.createStatement(); // クエリーを実行して結果セットを取得 String sql = "select employee_id,first_name,last_name,email from hr.employees where employee_id between 100 and 132"; ResultSet rs = stmt.executeQuery(sql); // 表示 while (rs.next()) { %> <%= rs.getInt("employee_id") + " " + rs.getString("first_name") + " "+ rs.getString("last_name") + " " + rs.getString("email") %><br> <% } // データベースから切断 stmt.close(); con.close(); } catch (Exception e) { e.printStackTrace(); } %> これで表示できればSELECT文のwhere文を修正すれば 1つのSELECT文はできますよね?

その他の回答 (3)

  • PED02744
  • ベストアンサー率40% (157/390)
回答No.4

私も、地域別から都道府県を選択させる程度の処理なら、JavaScriptで十分対応できるとおもいます。(全部で47パターンしかないから) JavaScriptの場合は、ヒントが出ているので、Strutsの場合のヒントを Strutsを使う場合、index.htmlに地域別セレクトボックスを作成しておき、選択されたらactionサーブレットへ飛ぶ様にしておきます。 ANo.2さんの回答に書かれているJSP内の検索ロジックはサーバサイドのactionサーブレット(*.do)のロジックになります。 そして、この検索結果をセッション変数に格納してJSPにフォワードします。 JSP側ではセッション変数から検索結果を取り出して、 <logic:iterate>~~~</logic:iterate> でループさせて表を出力します。

  • kakusuke
  • ベストアンサー率36% (95/259)
回答No.3

なんか同じ質問が別の人から飛んでるので 微妙な感じがしますが。 地域別のselectを作って、 JavaScriptでselectの表示非表示を切り替えるのも手かと思いますが。 このくらいは調べられるでしょう…。 ってことで、回答ではなく、アドバイスにしておきます。

  • fortranxp
  • ベストアンサー率26% (181/684)
回答No.1

1.使用するDBは? DBによって経験ありなしがあるので。 2.行う処理についてもっと具体的に。  例えば 自動車の車種を選んだらタイヤメーカーを選ぶのか。  それとも自動車の車種を選んだら1000ccか1300ccか1500ccを  選ぶのかどうか? 3.Strutsをご使用ですがこれはフレームワークの手法ですから  普通のJSPやサーブレットの例でもOKですか?

cappu11
質問者

補足

1.使用するDBは、オラクルです。 2.行う処理ですが、地域(関東・中部・関西~)を選んで、 それに含まれる都道府県を選ぶ処理です。 共通のキーを持っているので、それを使いたいです。 各データの値は、 地域(コード、名称) 都道府県(コード、県コード、県名)になります。 3.普通のJSPやサーブレットの例で構いません。 処理方法がよく分かってないので、どんなサンプルでも構いません。

関連するQ&A

  • 【struts】2つのselectの連動

    struts初心者です。 2つのselectで、一つ目のselectが選択されたら、関連する内容のデータを、もう一つのselectに表示させるようにしたいです。 どうすればできるのでしょうか?javascriptとか使用するんですかね??

  • 連動させたいセレクトボックスについて。

    こんにちは。DB+PHPが初心者のものです。 前にもここで質問させていただきましたが、 自分なりにコードを書いてみたので コードの訂正、ご教授をよろしくお願いいたします。 セレクトボックス1には、[table 1]の、種類が入り れレクトボックス2には、[table 1]の種類に連動して、[table 2]の名前が選択できるようにする。 下記のようにソースを書いてみましたが、 table1の値は、セレクトボックスでちゃんと表示されますが、table2はセレクトボックスは表示されるものの、何も値がありません(T_T) 動きとしては、table1のセレクトボックスで選択したら、その項目をDBへ問い合わせ、その項目に対応した、DBに登録されているtable2の値を二つ目のセレクトボックスに表示させたいです。 <html> <body> <select name="mkoumoku"> <option selected>-------------</option> <?php //DB接続 $dbcon=mysql_connect("localhost","abcd","defg"); //DB選択 mysql_select_db("zozozo"); //table1を取得 $res=mysql_query("select distinct * from table1"); while ($rows=mysql_fetch_array($res)) { echo "<option value=\"".$rows['id']."\">".$rows['kind']."\n"; } echo "</select>"; ?> <select name="skoumoku"> <option selected>-------------</option> <? //table1に連動して項目を変えたいところのコード $res1=mysql_query("select * from table2 where key =$_POST[mkoumoku] order by id"); while ($rows=mysql_fetch_array($res1)) { echo "<option value=\"".$rows['id']."\">".$rows['name']."\n"; } //Dbクローズ mysql_close($dbcon); ?> </body> </html>

    • ベストアンサー
    • PHP
  • struts javaでの登録情報の変更をするには

    strutsにてシステムを作成していますが、 strutsが初めてなため、悩んでいます。 formクラスとActioクラスとjspとDBを使い、DBに登録はできました。 今度はDBに登録したものを変更したいのですが、どうやればいいのか分かりません。ネットで探してもいい情報はありませんでした。 会員が登録→ログイン→その後、変更処理をしたいのですが、 (1)「a」の情報を持っている会員がいます。この会員がログインしたらこいつのもってる情報は「a」だとどうやったらわかるのか? (2)「a」を「b」に変更する時、テキストボックス(<html:text)にDBから引っ張って来た「a」を表示させるのか? 更新のサンプルをください。

    • ベストアンサー
    • Java
  • StrutsのFormについて

    現在Struts(1.2)にてプログラムしているのですが、 分からない点があります。 とりあえず入力画面と入力画面表示時に必要なデータを取得してくる Actionクラスを作りました。 必要なデータとは、セレクトボックスの値でDBから取得しております。 で、取得したデータをActionクラスのexcute()が呼ばれたタイミングで、ActionFormの生成を(new)してそれにDBから取得した値をいれて 最後にrequest.setAttribute()で設定しています。 これは間違いでしょうか? というのも、Actionクラスのexcute()のところで、 request.getAttribute("XXXform",xxForm)としてやると、 Formが取得できます。本来はこのFormに設定するべきなのでしょうか? request.setAttribute()をしていないのにFormがあることに混乱しております。 単にstruts-config.xmlでFormの定義をしたら勝手に作成される ものなのでしょうか? なんだか言ってることが分からなくなってきた、、 言いたいことをまとめると、、 今は入力画面初期表示のために自分でActionFormをexecute()の はじめでNEWしてそれにデータをいれてrquestに設定しているが、 本来は既にrquestにあるFormをgetしてそれにデータをいれて再度、 rquestに設定するのが正しいのかどうかです。 宜しくお願いします。

    • ベストアンサー
    • Java
  • Strutsを使った開発 + Oracle

    現在Strutsを使った簡単なシステムを作っていますが、 ORacleへの接続が、まったくわかりません。 Struts DB接続 妥当性チェックなど 参考になるサイトがあればお願いします。

  • Strutsで画面に表示した値の再取得って可能?

    お世話になっています。 mike219と申します。 現在strutsを使用してWebシステムを開発しております。 開発している最中にちょっと気になることがあったので質問させていただきました。 気になったのは以下のような感じの機能を作成する際の動作です。 (1)DBから取得したデータを一覧で表示します。 (2)一覧に表示したデータのフィルタを行い再表示を行う、といったものです。 ※フィルタの対象はDBからではなく、画面に表示した値です。 というような機能です。 (1)に関してはまったく無問題なのですが、 (2)の「一覧に表示したデータのフィルタを行い」はどういった感じで作成すれば いいのか分かりません・・・ (javascriptでなにかJsonとかデータを加工してしないといけないのかな?) いい方法をご存知であれば教えていただけると助かります。 ちなみに環境は↓です。 Java:1.6 Struts:1.3 Strutsに関しては経験が浅いです >< よろしくお願い致します。

    • ベストアンサー
    • Java
  • StrutsでDataSourceの切り替え

    Tomcat4 + Struts1.1にて、ログインした人の種別により接続するDataSourceの切り替えを行いたいのですが、このようなことは出来るのでしょうか? -------------------------------------------- 例:ユーザA、ユーザBで接続するDBを変更する。 -------------------------------------------- 1.データベースに2つのDataSourceを用意する。   ※以降DB1,DB2とする。    中のテーブル設定は全く同じとする。 2.ユーザAがログインした場合はDB1のhogeTableを、   ユーザBがログインした場合はDB2のhogeTableを   参照してデータを取得する。 -------------------------------------------- 要は、1つのシステムでユーザ毎にデータベースが分かれている為、ログイン情報によってどのデータベースを参照するかを切り替えたいのです。 (こうすればテーブル名は同じの為、データアクセス部分は共用できると考えています。) Struts-configには複数のDataSourceが設定できますが、こちらをどうやって切り替えれば良いのかが分からずに困っています。 (また切り替え以外での対応方法はあるのでしょうか?) こちらの件で、どなたかご存知の方、もしくは詳細な説明が記載されたHPを知っている方がおられましたら、教えていただけないでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Java
  • SQLServer2000のselect文で

    SQLServer2000のselect文で select count(*) from Table を実行するのに30秒以上かかってしまいます。 データ数は100万件もありません。 全件数を取得するのになぜこんなにかかってしまうのでしょうか? 主キーはVarcharの50バイトです。 こんな単純な文でこれだけかかってしまうのは、 DBの設定が悪いのでしょうか? それともPCの性能が悪いのでしょうか?

  • Strutsの構築・・・Strutsに詳しい方がいらっしゃらないでしょうか?

    今、Strutsの構築をやっています。 流れは以下のように思っています。 1、ユーザ画面から入力された内容が、Form-Beansに保存される。 2、action-mappingsにより、Form-Beansから保存された内容を取り出し、処理を行う。 3、処理内容をJspによりユーザ画面に返す。 質問は、Jspはどうやって処理結果を取得するのでしょうか? 自分の考えとしては、多分<bean:write>というタグを使うでしょうと思っていますが、しかし、具体的なやり方はわかりません。 たとえば、どうやって処理結果(DBから取得してきたレコードとか)をForm-Beansに入れるのでしょうか?そして、どうやって処理結果(レコードを一行一行)を取得するのでしょうか?・・・はわからないです。 どうぞ、お分かりの方がいらっしゃったら、教えていただきたいです。

  • Struts1.3.10でAjax連携

    Struts-1.3.10を使用しています。 データの登録・更新・削除等を行っているのですが、毎回の画面更新がだるいので Ajaxを利用して画面遷移を発生させないような処理を行おうと思っています。 JSFなどはf:ajaxタグなどで容易に再描画を行うことができるようですが このシステムではJSFは使用していません。 このシステムをStruts2に移行するのもStruts1と2では互換性がないということでためらっています。 そこでStruts1系でAjaxを利用して画面の一部(データの一覧部分など)を再描画させるための フレームワーク等があれば教えていただけませんか。 調べているとDWRを使用するというのがありましたが例としてあげられているのがStruts2系のものが多かったです。Struts1でも問題なく使用できるのでしょうか? よろしくお願いします。

    • ベストアンサー
    • Java

専門家に質問してみよう