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

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

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

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Seasar2

Seasar2はJ2EE/Java EEでの大規模な開発を効率良く行なうためのフレームワークです。 必要な設定ファイルを従来のものと比べて少なくし、依存性を分離して記述しています。 そのため、生産性の高いプログラム開発が可能です。

Q&A

1回答

2180閲覧

Seaser2 配列の扱い方

Alice0225

総合スコア206

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Seasar2

Seasar2はJ2EE/Java EEでの大規模な開発を効率良く行なうためのフレームワークです。 必要な設定ファイルを従来のものと比べて少なくし、依存性を分離して記述しています。 そのため、生産性の高いプログラム開発が可能です。

0グッド

0クリップ

投稿2016/12/22 05:16

現在、Seaser2を使用したWebアプリを作成しています。
Actionにて作成したリストをJSP内のJavaScriptで使用したいのですが、インデックスの指定がどうもうまく出来ていないようです。

JavaScript

1 2var tikokuArray = []; 3 4for(var i = 0; i < ${memberList.size()}; i++){ 5 if("${memberList.get(i).tikokuFlg}" == "1"){ 6 tikokuArray.push("${memberList.get(i).LastName}" + " " +"${memberList.get(i).FirstName}"); 7 } 8}

Actionで作成したリストを要素数分ループし、遅刻フラグが"1"の人はtikokuArrayに名前を格納するという処理です。

実際に上記処理を実行するとtikokuFlgが1の人がいるにも関わらず、tikokuArrayへ名前が格納されません。

試しに

JavaScript

1 2var tikokuArray = []; 3 4for(var i = 0; i < ${memberList.size()}; i++){ 5 if("${memberList.get(5).tikokuFlg}" == "1"){ 6 tikokuArray.push("${memberList.get(5).LastName}" + " " +"${memberList.get(5).FirstName}"); 7 } 8}

というようにリストのインデックスを直接数字で指定すると想定した結果が返ってきていることが確認できました。

i番目という指定をする場合にはどのように修正すればよいのでしょうか。

また、「${~~~~}」というような書き方の名称のようなものがあればお伺い出来ますと幸いです。(調べようとしたのですが名前がわからずうまく調べられませんでした…)

お手数お掛けいたしますが、皆様の知識を拝借させて頂ければ幸いです。

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

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

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

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

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

guest

回答1

0

根本的に処理のタイミングを間違えているのではないでしょうか?

$の部分をEL式といいますが、この、$部分を変換する処理のタイミングはJSPが処理されるタイミング、
つまり、サーバ処理・応答時です。
しかし、ループを回したいjavascriptが処理されるのは、応答後のクライアントです。

ゆえに、${memberList.get(i).LastName}が処理されるタイミングではiが存在しないのでしょう。

投稿2016/12/22 06:26

akio221

総合スコア716

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

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

Alice0225

2016/12/22 06:29

ご回答ありがとうございます。 ${memberList.get(i).LastName}と記載しても処理のタイミングでは ${memberList.get(0).LastName}で固定になってしまっているということでしょうか?
akio221

2016/12/22 07:34

JSPの処理時点では変数iが存在しない(null)ため、評価がなし、つまり、""になっています。 JSPで扱いたいリストの値はJSPで処理せねばなりません。 フレームワークがわからないので、お勧め仕様が無い部分ではありますが、 カスタムタグなどでループして書いてやれば処理できるかと・・・。
Alice0225

2016/12/22 08:00

そういうことなのですね。。。 JavaScriptで処理するのは難しいのでしょうか;w; 一応フレームワークはSeasar2を使用しているのですが何か打開策などありますでしょうか…
akio221

2016/12/22 08:06

えーと、JSPの標準タグで 以下をJSPにはっつけて、中身が表示されますか? <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <c:forEach items="${memberList}" var="entry"> <c:out value="${entry.key}" /> &nbsp;=&nbsp; <c:out value="${entry.value}" /> <br/> </c:forEach>
akio221

2016/12/22 08:15 編集

と、すみません、標準タグjstl.jarのダウンロードが必要そう・・・。 seasar2はDIコンテナの名前なので、JSPを処理する何かが別途あるはずですが・・。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問