JavaScriptとJSPの連携において、メソッドで受け取った値を配列番号として使用する方法は可能か?

このQ&Aのポイント
  • JavaScriptのメソッドで受け取った値をJSPのスクリプトレットで配列番号として使用したいが、認識してくれないようです。
  • 質問者は、JavaScriptのメソッドで受け取った値をJSPのスクリプトレットで配列番号として使いたいと思っていますが、うまく機能していないようです。
  • JavaScriptとJSPの連携において、メソッドで受け取った値をJSPのスクリプトレットで配列番号として使用することは可能でしょうか?
回答を見る
  • ベストアンサー

JavaScriptとJSPの連携

JavaScriptのメソッドで受け取った値を JSPのスクリプトレットで配列番号として使いたいのですが 認識してくれていないようです・・・。 これは不可能なんでしょうか? function setKey(no){ int colNo = parseInt(no); <% HashMap keys = (JSP部分で取得済みのHashMap)[colNo]; %> } ====== <TABLE><TR> <% for(int i; i < 配列.length; i++){ %> <TD> <INPUT TYPE="button" NAME="btnSet<%= i %>" VALUE="セット" onClick="setKey('<%= i %>');" > ・・・・・ ・・・・・ </TD></TR> <% } %> <TABLE> こうすると、[colNo]を認識してくれないようなのですが・・・。

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

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

  • ベストアンサー
回答No.2

function setKey(no){ int colNo = parseInt(no);←A <% HashMap keys = (JSP部分で取得済みのHashMap)[colNo];←B %> } クライアント  ブラウザよりリクエスト  ↓ サーバー  JSPをコンパイルしてサーブレットが生成(初回のみ)  ↓  サーブレットで処理を実行(ここでBが処理される)  サーブレットがレスポンスを返す  ↓ クライアント  レスポンスのhtmlをブラウザがロード  ↓  Javascriptを実行(ここでAが処理される)  ↓  ブラウザに表示 Bで使おうとしているcolnoはAで宣言していますが、 実際に処理される順番が(だいたいですが)上記のような流れにになるため、 結果として認識できません。 JSP、Javascript、何がどこでどう処理されるか今一度確認した方が良いですよ。

mokoron
質問者

お礼

回答ありがとうございました! JSPはサーバーでコンパイルされて実行されるのは 認識していましたが、コーディング時は 切り離して考えてしまっていました。 違う方法で実行するよう考えます。

その他の回答 (1)

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

失礼ですが、JSPとHTMLの違いをもっと理解する必要がありそうです。 http://www.atmarkit.co.jp/fjava/rensai/jsp01/jsp01.html JSPはサーバ側でデータを生成・処理する HTMLはクライアント側でデータを処理する という違いがあります。 JavaScriptはクライアント側ですから、クライアント側で生成した値を JSPで理解させるためには、サーバにデータを渡す必要があります。

mokoron
質問者

お礼

ありがとうございました。 URL参考にしました。

関連するQ&A

  • JSPとjavaの問題

    ResultSet rs = db.getResultSet("SELECT * FROM SHAINLIST "); ArrayList list = new ArrayList(); while(rs.next()) { int state = rs.getInt("attendance"); list.add(new Integer(state)); } int[] in = new int[list.size()]; for (int i = 0; i < list.size(); i++) { in[i] = ((Integer)list.get(i)).intValue(); } %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>JSPでDB接続</title> </head> <body> <table> <tr><td>欠席</td><td>><%= countNum(-1, in) %></td></tr> <tr><td>未定</td><td><%= countNum(-1, in) %></td></tr> <tr><td>出席</td><td><%= countNum(-1, in) %></td></tr> </table> 以下のエラーがでてきますが、どういう意味でしょうか。 org.apache.jasper.JasperException: JSPのクラスをコンパイルできません: JSPファイル: /jsp/tokei.jsp の中の26行目でエラーが発生しました The method countNum(int, int[]) is undefined for the type tokei_jsp 23: </head> 24: <body> 25: <table> 26: <tr><td>キ鄲ハ</td><td>><%= countNum(-1, in) %></td></tr> 27: <tr><td>フ、ト�</td><td>3</td></tr> 28: <tr><td>スミタハ</td><td>3</td></tr> 29: </table> よろしくおねがいします。

    • ベストアンサー
    • Java
  • JSP内での配列の値取得方法。

    こんにちは。 -------- (略) <SCRIPT LANGUAGE="JavaScript" > function NextPage(no){ with( document.frm1 ) { hidNO.value = no; hidPlanId.value = 「ここに配列から取得した値を表示したい」; action = "Next.jsp"; submit(); } (略) <FORM name="frm1"> <% for(int i=0; i<(DBより取得した配列).length; i++) { ROW(HashMap継承の配列クラス) row = rows[i]; %> <INPUT TYPE="hidden" ID="hidKey" NAME="hidKey" VALUE="<%= i番目の値(1)%>" > <INPUT TYPE="hidden" ID="hidKey" NAME="hidKey" VALUE="<%= i番目の値(2)%>" > <TD><INPUT TYPE="button" NAME="btnDet<%= i %>" VALUE="詳細表示" onClick="NextPage('<%= i %>');" > </TD> <% } %> </FORM> ******* 上記のhidkeyのvalue値をJavaScript内でi番目の値を 取得するにはどのように記載したらよいのでしょうか・・・。 他のクラス等を使っているため、うまくコードが表現 できていないかもしれませんが、 もしこれでわかった方、ぜひ教えてください。

    • ベストアンサー
    • Java
  • JSPのループ処理のりファクタリング

    <table border="1"> <% for(int i=0; i<5; i++){ %> <tr> <% for(int j=0; j<3; j++){ %> <td>セル</td> <% } %> </tr> <% } %> </table> 上記のような処理をしたいのですが、JSPが非常に見づらくなり何か別のシンプルな処理を探しています。 実際は外部データからループする数(条件)等を取得するためかなり複雑になってしまいます。 活用できるタグライブラリ(Struts、JSTL)などありますか? よろしくお願いします。

    • 締切済み
    • CSS
  • JavaScriptでの配列表示の表示制御

    Javaの配列をJSPでテーブルに表示する際に、 配列の最初の要素(1つ)だけを表示して、 残りの要素はデフォルト非表示にしたいです。 「開く」ボタンを押下すると、配列の残りの要素を表示する、 というような作りにしたいのですが JavaScript部分をどう書いたら実装できるかがわかりません。 今現在、全表示時で下のような感じです。 ご教授お願い致します。 似たようなページがありましたらお教え頂けると幸いです。 <table> <tr> <th>配列</th> </tr> <c:forEach items="${配列型}" var="あ"> <tr> <td><c:out value="${あ.中身}" /></td> </tr> </c:forEach> </table> <input type="submit" value="開く" onclick="toOpen()"></input>

  • JSPで個人データを入力、出力

    <html> <head><title>Costomer</head></title> <body bgcolor="white"> <div align="center"> <%@ include file="header.html"%> <form method="POST"action="customer.jsp"> <TABLE> <TR> <TD>Name</TD> <TD><input type="text" name="name"></TD> </TR><br> <TR> <TD>Mail Address</TD> <TD><input type="text" name="mail address"></TD> </TR><br> <TR> <TD>TEL No</TD> <TD><input type="text" name="tel no"></TD> </TR><br> </TABLE> <br> <input type="submit"value="Submit"> <input type="reset"value="Cancel"> </form> <jsp:include page="post-response.jsp" flush ="true" /> <%@ include file="copyright.html"%> </div> </body> </html> …………………………………………………………………………………… <html> <head><title>Post-Response</head></title> <body bgcolor="white"> <div align="center"> <TABLE BORDER="1"> <TR> <TD>Name</TD> <TD></TD> </TR><br> <TR> <TD>Mail Address</TD> <TD></TD> </TR><br> <TR> <TD>TEL No</TD> <TD></TD> </TR><br> </TABLE> <form method="GET"action="customer.jsp"> <input type="reset"value="Clear"> <br> </form> </div> </body> </html> …………………………………………………………………………………… 上のcustomer.jspにName,Mail Adress,Tel no,を入力し、打ち込んだものを下のpost-response.jspに出力したいのですがどのように出力したらよいのかわかりません!何度やってもエラーが出てしまいます。 教えてください!!お願いします! ・上のcustomer.jsp内の<%@ include file="header.html"%>と<%@ include file="copyright.html"%>無視してください!

  • javascriptによる計算

    テキストボックス「a1~6」の値とテキストボックス「b1~6」に入力された値を足し算してテキストボックス「c1~6」(例…c[i] = a[i] + b[i])を計算するJavaScriptを作成しているのですが、結果がundefinedになってしまい上手くいきません。どうやったら動くのかどうかご教授ください。 以下ソース↓ <script language ="JavaScript"> function plus() { var intResult = 0; for (i=1; i<=6; i++){ intResult[i] = 0; if (!isNaN(document.forms["A"].all["a"+i].value) && !isNaN(document.forms["B"].all["b"+i].value)){ intResult[i] += parseInt(document.forms["A"].all["a"+i].value); intResult[i] += parseInt(document.forms["B"].all["b"+i].value); } <table border = 1> <tr> <td> <table border = 1> <tr> <td> <form name="A"> <input type = "text" size = 5 name = "a1"></input> </td> <td> <input type = "text" size = 5 name = "a2"></input> </td> <td> <input type = "text" size = 5 name = "a3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "a4"></input> </td> <td> <input type = "text" size = 5 name = "a5"></input> </td> <td> <input type = "text" size = 5 name = "a6"></input> </form> </td> </tr> </table> </td> <td> <table boeder = 1> <tr> <input type = "button" onClick="plus()" value = "+"></input> </tr> </table> </td> <td> <table border = 1> <tr> <td> <form name = "B"> <input type = "text" size = 5 name = "b1"></input> </td> <td> <input type = "text" size = 5 name = "b2"></input> </td> <td> <input type = "text" size = 5 name = "b3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "b4"></input> </td> <td> <input type = "text" size = 5 name = "b5"></input> </td> <td> <input type = "text" size = 5 name = "b6"></input> </form> </td> </tr> </table> </td> </tr> </table> 答え <form name = "C"> <table border = 1> <tr> <td> <input type = "text" size = 5 name = "c1"></input> </td> <td> <input type = "text" size = 5 name = "c2"></input> </td> <td> <input type = "text" size = 5 name = "c3"></input> </td> </tr> <tr> <td> <input type = "text" size = 5 name = "c4"></input> </td> <td> <input type = "text" size = 5 name = "c5"></input> </td> <td> <input type = "text" size = 5 name = "c6"></input> </td> </tr> </table> </form> </body> document.C.all["c"+i].value = intResult[i]; } } </script>

  • JSPにおける引数の受け渡し

    こんにちは. 今JSPのプログラムを作っているのですが,引数を送る場面で困っています. test2.jspにおいて,タイプはちゃんと表示されているのですが,IDとパスワードはnullになっています. もし宜しければ,どこが間違っているのかお教えいただけないでしょうか?よろしくお願いします. 【test.jsp】 ~省略~ <%String type="aaa";%> <?xml version="1.0" encoding="Shift-JIS" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja"> <head> ~省略~ </head> <body> <div class="abc"> <h1>タイトル</h1> <form action="test2.jsp" method="post"> <p> <table> <tr> <td>ID</td> <td><input type="text" name="user_id" /></td> </tr> <tr> <td>パスワード</td> <td><input type="password" name="user_pass" /></td> </tr> </table> <br /> <input type="button" value="ログイン" onclick="test('test2.jsp?type=<%=type%>')" /> </p> </form> </div> <script type="text/javascript" src="test.js"></script> </body> </html> 【test2.jsp】 ~省略~ <% String type=request.getParameter("type"); String user_id=request.getParameter("user_id"); String user_pass=request.getParameter("user_pass"); %> ~省略~ <h1>タイトル2</h1> <p> <table> <tr> <td>ID</td> <td><%=user_id%></td> </tr> <tr> <td>パスワード</td> <td><%=user_pass%></td> </tr> <tr> <td>タイプ</td> <td><%=type%></td> </tr> </table> </p>

    • ベストアンサー
    • HTML
  • htmlページからjspページへの受け渡し

    htmlページでスポーツ種目を選びjspページで種目名・料金・画像を表示するものですが tableに入れる方法やテーブルの行の繰り返しが上手く出来ません 配列を使ってはみましたが、画像が正しく表示できていません ※修正できる箇所は限られています htmlページ <html> <head> <title></title> </head> <body> <div align="center"> <h1>参加スポーツの選択</h1> <form action="jspFormexam2.jsp" method="get"> <table border="1" bgcolor="white"> <tr bgcolor="#00FFFF"> <td colspan="4"> スポーツを選択してください </td> </tr> <tr> <td><img src="img/banana.jpg" height="100" width="166"></td> <td>バナナボート</td> <td> <input type="checkbox" name="tour" value="0"> </td> <td>$30</td> </tr> <tr> <td><img src="img/para.jpg" height="100" width="166"></td> <td>パラグライダー</td> <td> <input type="checkbox" name="tour" value="1"> </td> <td>$45</td> </tr> <tr> <td><img src="img/surfing.jpg" height="100" width="166"></td> <td>サーフィン</td> <td> <input type="checkbox" name="tour" value="2"> </td> <td>$20</td> </tr> <tr> <td><img src="img/dive.jpg" height="100" width="166"></td> <td>ダイビング</td> <td> <input type="checkbox" name="tour" value="3"> </td> <td>$100</td> </tr> <tr> <td><img src="img/golf.jpg" height="100" width="166"></td> <td>ゴルフ</td> <td> <input type="checkbox" name="tour" value="4"> </td> <td>$70</td> </tr> <tr> <td colspan="2">参加人数</td> <td><input type="text" name="people" size="4"></td> </tr> </table> <input type="submit" value="送信"> <input type="reset" value="リセット"> </form> <h2>5人以上で10%off</h2> </div> </body> </html> jspページ <%@ page contentType="text/html;charset=Shift_JIS"%> <% request.setCharacterEncoding("Shift_JIS"); int[] tourPrice = {30,45,20,100,70}; String[] tourName ={"バナナボート","パラセイリング","サーフィン","ダイビング","ゴルフ"}; String[] tourImg ={"banana.jpg","para.jpg","surfing.jpg","dive.jpg","golf.jpg"}; int total =0; int itemprice =0; String tableData ="<tr bgcolor='#00FFFF'><th>ツアー名</th>"+"<th>単価</th><th>合計</th><th>イメージ</th></tr>"; String message =""; String subject =""; 修正可能箇所↓ String[ ] tourValues=request.getParameterValues("tour"); for(int i=0; i<tourValues.length; i++){ <%=tourPrice[i] %> <%=tourName[i] %> <%=tourImg[i] %> <% } %> 修正可能箇所↑ <html> <head> <title>マリンスポーツ申し込み明細</title> </head> <body> <div align="center"> <h1 align ="center"><%= subject %></h1> <hr> <table border ="1"> <%= tableData %> </table><br> <%=message %> <hr> </div> </body> </html>

    • ベストアンサー
    • Java
  • javascript オセロ

    javascriptでオセロを作ろうと思っています。 初めに「クリックしたtdタグの背景色を、クリック数が奇数回なら白、偶数なら黒にする」コードを書きたいのですが、 変数とthis(クリックされたtdタグ)の使い方がいまいち分かりません。 ご教授いただければと思います。 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>無題ドキュメント</title> </head> <style type="text/css"> * { margin: 0; padding: 0; } td { width: 100px; height: 100px; } .green { background-color:#093; } .black { background-color:#333; } .white { background-color:#CCC; } </style> <body> <table> <tr> <td class="green" onClick="osero(this)"></td> <td class="green" onClick="osero(this)"></td> <td class="green" onClick="osero(this)"></td> <td class="green" onClick="osero(this)"></td> </tr> <tr> <td class="green" onClick="osero(this)"></td> <td class="black" onClick="osero(this)"></td> <td class="white" onClick="osero(this)"></td> <td class="green" onClick="osero(this)"></td> </tr> <tr> <td class="green" onClick="osero(this)"></td> <td class="white" onClick="osero(this)"></td> <td class="black" onClick="osero(this)"></td> <td class="green" onClick="osero(this)"></td> </tr> <tr> <td class="green" onClick="osero(this)"></td> <td class="green" onClick="osero(this)"></td> <td class="green" onClick="osero(this)"></td> <td class="green" onClick="osero(this)"></td> </tr> </table> <script type="text/javascript"> <!-- c_count = 0;//tdをクリックした回数 //tdクリックで黒 function kuro(i){ document.i.style.backgroundColor = "#333"; c_count=c_count++ } //tdクリックで白 function siro(i){ document.i.style.backgroundColor = "#ccc"; c_count=c_count++ } //クリック交互に黒白 function osero(i){ if(c_count % 0){ siro(i); }else{ kuro(i); } } --> </script> </body> </html> よろしくお願いします。

  • jspでのArrayListの値の表示

    jsp上でBeanで以下のように設定されている ArrayList<ArrayList<Integer>> a; a.add(new ArrayList<Integer>); a.add(new ArrayList<Integer>); a.add(new ArrayList<Integer>); a.get(0).add(0); a.get(0).add(1); a.get(1).add(2); a.get(1).add(3); a.get(1).add(4); a.get(1).add(5); a.get(2).add(6); a.get(2).add(7); a.get(2).add(8); aのような行と列が不定のArrayListの全ての値をjspの画面上に  値 値 値  0  2  6  1  3  7    4  8    5 といったようにテーブルで表示したいのですがjspにどのような既述をすればよいでしょうか? クリックしたときの処理などの導入や項目を増やすなど拡張する場合があるので 以下のような形とレイアウトが同じようになると望ましいです <td> <table> <tr>値</tr> <tr>0</tr> <tr>1</tr> <tr>2</tr> </table> </td> <td> <table> <tr>値</tr> <tr>3</tr> <tr>4</tr> <tr>5</tr> </table> </td> <td> <table> <tr>値</tr> <tr>6</tr> <tr>7</tr> <tr>8</tr> </table> </td>

専門家に質問してみよう