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

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

新規登録して質問してみよう
ただいま回答率
85.37%
iteratorパターン

iteratorパターンとは、オブジェクト指向プログラミングのデザインパターンです。コンテナオブジェクトの要素を列挙する手段を独立させることによって、コンテナの内部仕様に依存しない反復子を提供することを目的とします。

JSP

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

Java

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

Struts 2

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

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

Q&A

解決済

2回答

21015閲覧

【Struts2,JSP】s:iteratorのstatusを利用して、Actionとリストのやり取りをしたい

kobahito

総合スコア87

iteratorパターン

iteratorパターンとは、オブジェクト指向プログラミングのデザインパターンです。コンテナオブジェクトの要素を列挙する手段を独立させることによって、コンテナの内部仕様に依存しない反復子を提供することを目的とします。

JSP

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

Java

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

Struts 2

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

Struts

StrutsはJava向けのWebアプリケーションフレームです。MVCモデルに基づいており、JSPやJavaサーブレットを組み合わせ、アプリケーション構築時に使用する各機能を提供しています。

0グッド

0クリップ

投稿2016/06/24 06:13

編集2016/06/24 06:31

《やりたい事》
Actionで、
"fieldVar"というフィールド変数を持つクラスを型に、"testList"というリストを用意したとします。
リスト内のそれぞれのクラスで、"fieldVar"に適当な値がすでに設定してあるとして、
JSPでそれぞれの"fieldVar"をテキストフィールドにして表示をして、
且つ入力し直したテキストフィールドの値をsubmitなどで飛ばしたときに、
Struts2によって自動でマッピングしてActionの"testList"に値を送るようにしたいです。

① <s:iterator value="%{testList}" var="list" status="rowstatus"> <s:textfield name="testList[%{#rowstatus.index}].fieldVar" /> </s:iterator>
② <s:iterator value="testList" var="list" status="rowstatus"> <s:textfield name="testList[#rowstatus.index].fieldVar" /> </s:iterator> ```《質問》 Struts2.1.8.1の場合、①で実現できましたが、 Struts2.3.29の場合、①の実装だと、テキストフィールドに値が表示されない状態になってしまいます。 ②の場合なら表示はされますが、今度はActionに送った時、自動でマッピングをしてくれなくなります。 Actionのほうで見てみると、testList.size()が0になっているといった状態です。 Struts2.3.29での実現を考えています。 なにか良い解決法はありますでしょうか? よろしくお願いします。 ちょうど下記ページでのような事を、Struts2.3.29でしたいといった感じです。 https://sites.google.com/site/yasuda/java/struts2/iterator%E3%81%AE%E7%BD%A0

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

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

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

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

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

A-pZ

2016/06/24 07:24

Actionクラスのフィールド定義があると明確な回答が得られると思います。(testListの中にあるfieldVarの型次第で変わります)
kobahito

2016/06/24 08:13

自己解決しました。 お騒がせしました。
guest

回答2

0

自己解決

https://sites.google.com/site/yasuda/java/struts2/iterator%E3%81%AE%E7%BD%A0
に載っているように、value属性を使って解決しました。
具体的には以下の様に記述しました。

<s:textfield name="testList[%{#rowstatus.index}].fieldVar" value="%{fieldVar}"/> ```value属性がテキストフィールドの初期値を表示し、name属性によってちゃんとマッピングができている、という状態にできました。 わかりずらい質問の仕方で申し訳ありませんでした。 ありがとうございました。

投稿2016/06/24 08:13

kobahito

総合スコア87

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

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

0

こうでは?

HTML

1<s:iterator value="testList" var="list" status="rowstatus"> 2 <s:textfield name="%{testList[rowstatus.index].fieldVar}" /> 3</s:iterator>

もしくはせっかくvarを指定しているのでこうでは?

HTML

1<s:iterator value="testList" var="list" status="rowstatus"> 2 <s:textfield name="%{list.fieldVar}" /> 3</s:iterator>

投稿2016/06/24 06:47

masaya_ohashi

総合スコア9210

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

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

kobahito

2016/06/24 07:37

回答ありがとうございます。 自分の環境ではどちらもうまく動作しませんでした。
masaya_ohashi

2016/06/24 07:40

試しにiterator内に ${testList[rowstatus.index].fielsVar} ${list} ${list.fieldVar} ${rowstatus} ${rowstatus.index} を書いてみて、それぞれどう出力されるか確認してみてはいかがでしょうか?
kobahito

2016/06/24 08:09

せっかく回答を頂いたのにすいません。 自己解決しました。 自分が質問文中で載せたURLの様に、value属性を使って解決しました。 助言をありがとうございます。
masaya_ohashi

2016/06/24 08:35

あー、今質問の意味を理解しました。nameと配列の名前が一緒だったからごっちゃに考えてました。
kobahito

2016/06/27 00:02

自分でも細かい部分まで把握できてなく、分かりにくい質問ですいませんでした。 回答ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問