- PR -

データベースの値をJSPに表示したい(struts)

1
投稿者投稿内容
まろにえ
会議室デビュー日: 2007/06/11
投稿数: 12
お住まい・勤務地: 東京
投稿日時: 2007-06-11 11:08
はじめまして

JAVAを独学で始めて一か月の者です。
現在Webアプリケーションを作ろうとしている最中、理解に苦しむ内容があり苦しんでおります。
同じような内容の投稿や記事はあるのは分かっているのですが、どうしても理解することができません。
ご協力よろしくお願いいたします。

やりたいこと:
mysqlにある2列のデータをstruts:logic:iterateでJSPに表示する

アクション:

Connection con = getConnection();
Statement smt = con.createStatement();
ResultSet rs = smt.executeQuery("select * from test");

List list = new ArrayList();

while(rs.next()){
resultForm re = new resultForm();
re.setTitle(rs.getString("title"));
re.setContent(rs.getString("content"));
list.add(re);
req.setAttribute("resultForm", re);
}

-----------------------------------------------------------
アクションフォーム

private String title;
private String content;

public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}

-----------------------------------------------------------
出力先JSP

<logic:iterate id="id" name="resultForm" scope="request" >
<bean:write name="id" property="title" />
<bean:write name="id" property="content" />
</logic:iterate>

-----------------------------------------------------------
エラー

javax.servlet.ServletException: このコレクションに対するイテレータは生成できません

-----------------------------------------------------------
疑問点
@アクションフォームでlistに値を格納して、フォームをrequestにsetして、JSPでフォームから値を出そうとする。本やWebでこうやっているのでマネてますが、わざわざlistにしたんだから、listをsetして、getしなくていいのかなと疑問
Aアクションでフォーム型からlist型にしていますが、フォームの存在意義が疑問

投稿内容やマナーに不備がございましたら、申し訳ございません。
よろしくお願い致します。



[ メッセージ編集済み 編集者: まろにえ 編集日時 2007-06-11 11:16 ]
小僧
ぬし
会議室デビュー日: 2002/08/14
投稿数: 526
投稿日時: 2007-06-11 11:40
引用:

疑問点
@アクションフォームでlistに値を格納して、フォームをrequestにsetして、JSPでフォームから値を出そうとする。本やWebでこうやっているのでマネてますが、わざわざlistにしたんだから、listをsetして、getしなくていいのかなと疑問


リストを取得する処理は、Logicタグライブラリ
 <logic:iterate id="id" name="resultForm" scope="request" >
の部分で、リストの中身を一つ一つ取り出す処理を行っているので、裏側でgetされている
形になっています。

引用:

Aアクションでフォーム型からlist型にしていますが、フォームの存在意義が疑問


フォームの存在意義
1. クライアントから入力された情報をまとめて扱いやすくする
2. 後々、入力データチェック(バリデーション)という処理を試すことがあると
思いますが、その際にバリデーション処理を適用する単位がフォーム単位だったり
します

> JAVAを独学で始めて一か月の者です。

学習方法は様々だとは思いますが、初期段階ではWeb絡みの仕様が絡んだ物を
題材にするよりも、Java言語仕様などをしっかり理解された方が良いと思いますよ。
がんばってください。




まろにえ
会議室デビュー日: 2007/06/11
投稿数: 12
お住まい・勤務地: 東京
投稿日時: 2007-06-11 11:56
>リストを取得する処理は、Logicタグライブラリ
> <logic:iterate id="id" name="resultForm" scope="request" >
>の部分で、リストの中身を一つ一つ取り出す処理を行っているので、裏側でgetされてい>る
>形になっています。

この説明でイメージができて、理解が深まりました。
それを元に下のように変更したら、エラーも解消されました。

req.setAttribute("resultForm", re);

req.setAttribute("resultForm", list);

>学習方法は様々だとは思いますが、初期段階ではWeb絡みの仕様が絡んだ物を
>題材にするよりも、Java言語仕様などをしっかり理解された方が良いと思いますよ。
>がんばってください。

Webアプリケーションが最終目的だったので、Web関係の文献を読みあさっていましたが、Java言語仕様も積極的に勉強していこうと思います。


ご協力ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)