質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Q&A

解決済

2回答

724閲覧

jsp内のjavascriptについて

kanetugu_70e

総合スコア100

JSP

JSP(Java Server Pages)とは、ウェブアプリケーションの表示レイヤーに使われるサーバーサイドの技術のことです。

Struts 2

Apache Struts 2は、Apache Strutsプロジェクトにて開発されているオープンソースのJavaベースのWebアプリケーションフレームワークです。Sturts1に比べ、設定ファイルの削減、依存性の注入、POJO等の改善がなされています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

0グッド

0クリップ

投稿2019/02/04 10:29

実現したい事

jspにてActionクラスのMapを扱う際、任意のキー値を動的に取得するにはどの様に記述すれば良いのでしょうか?
記載コードで実行の結果、値が取得できずテーブルが空となってしまいます。

※そもそも、Listで渡せばs:iteratorで回すだけで同様の事が実現出来るかと思いますが、Mapでも同様の事が出来ないものかと思い質問させて頂きました。

条件

・DBから取得できるレコード数は不明
・Mapを使用した受け渡しとする

試した事

・Java(Action)側の動作に問題が無いことは確認済みです。DBから値の取得、 DTOクラスへのset、sessionへのputも問題ありません。
・ javascript側のinsertAdjacentメソッド部分をdocument.writeメソッドで試しましたが特に変化はありませんでした。

Java(Action)

1/2ResultSetクラスのresultにDBから取得したデータを格納。 3取得データはいずれもString型。 4 DTOもDBデータに合わせ定義済み。 5sessionはMap6/ 7 8int i=1; 9while(result.next()){ 10ItemDTO dto=new ItemDTO(); 11dto.setName(resultSet.getString("name")); 12dto.setPrice(resultSet.getString("price")); 13dto.setStock(resultSet.getString("stock")); 14session.put("item"+i++,dto); 15} 16session.put("itemSize",i-1); 17

jsp

1<table> 2< input type="hidden" id="size" value="<s:property value='session.itemSize'/>"> 3<div id="itemTable"> 4 5</div> 6</table>

javascript

1var i=1; 2var itemTable=document.getElementById("itemTable"); 3while(i< document.getElementById("size").value){ 4itemTable.insertAdjacent HTML("beforeend", 5"<tr><td><s:property value=' session.item"+i+".name'/></td></tr>" 6+"<tr><td><s:property value=' session.item"+i+".price'/></td></tr>" 7+"<tr><td><s:property value=' session.item"+i+".stock'/></td></tr>"); 8

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

table直下にdiv/inputなどは置けません。

<table>: 表要素 - HTML: HyperText Markup Language | MDN】
https://developer.mozilla.org/ja/docs/Web/HTML/Element/table

許可されている内容

以下の順となる。
任意の 1 個の <caption> 要素
0 個以上の <colgroup> 要素
任意の 1 個の <thead> 要素
次の 2 つの選択肢から 1 つ:
0 個以上の <tbody> 要素
1 個以上の <tr> 要素
任意の 1 個の <tfoot> 要素

while(i< document.getElementById("size").value){} が無く、i++のような記述がありません。
そもそもエラーで動いていないのでは。

あと、<s:property value=' session.item"+i+".name'/>はjspの変数を取得するつもりで書かれているとしたら、できません。JSPはサーバ側で出力され、ブラウザ側が受け取るのはテキストファイルで構成されたHTML/JavaScriptです。JavaScriptからJSPの変数を直接読めるわけでは有りません。

投稿2019/02/04 12:01

kei344

総合スコア69366

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanetugu_70e

2019/02/04 13:51

スマホからの入力であった為、while文の"}"やi++抜けについては記載漏れです。申し訳ございません。 変数取得については、おっしゃる通りJSPがそもそも何なのかを考えればわかる事でした。 また、tableの件については恥ずかしながら初めて知りました。 ご指摘頂きありがとうございました。
guest

0

keysetを使えばよいuということではないでしょうか?
https://teratail.com/questions/56649

投稿2019/02/04 12:09

kabao

総合スコア648

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kanetugu_70e

2019/02/04 14:36

keysetで取得した全keyをjspで渡して、使うということでしょうか? jspの細かい処理までは分からないのですが、jsp内で取得した変数を後段で別の変数取得のために使うことができるのでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問