- PR -

StrutsによるJava開発

1
投稿者投稿内容
にぃにぃ
ベテラン
会議室デビュー日: 2006/10/19
投稿数: 70
投稿日時: 2006-10-19 15:38
はじめまして。質問があります。Actionクラスでローカルに保存されている
CSVファイルを読み込み、JSPで画面に出力したいのですが、うまく行きません。
<logic:iterate・・・に問題があるようです。

<bean:write name="csvList"/>のみとすると正常に表示されるのですが、

<logic:iterate id="csvList" collection='<%= csvList %>'>
<bean:write name="csvList"/>
</logic:iterate>とすると正しく表示されません。

いろいろ試していますが、うまく行きません。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2006-10-19 15:53
CSVファイルを読み込んで配列(?)に代入するところまでは出来ているということでしょうか?

logic:iterate の使い方が分からないのか、CSVファイルの読みこみ方が分からないのか、もうすこし「わからない点」をハッキリ明記すると良いかもしれません。

logic:iterate の使い方が分からないのであれば Struts に付属のサンプルを見ると参考になると思います。

[ メッセージ編集済み 編集者: インギ 編集日時 2006-10-19 15:54 ]
にぃにぃ
ベテラン
会議室デビュー日: 2006/10/19
投稿数: 70
投稿日時: 2006-10-19 16:14
すいません。もっと具体的に申しますと、<logic:iterate の属性について
参考書やWeb上で検索していますが、
name:FormBeanの名前(BMIForm)、
property:name属性で指定したFormBeanプロパティ名(csvList)
そして、<bean:write nameはiterateのidに指定した名前というと理解していますが
また別のサイトを見るとiterateのidとwirteのnameが違う名前だったりといろいろ
試しているのですが、うまく表示されません。

csvの読込までは正常に出来ています。

Actionクラスではsetterメソッドで設定もしています。
req.setAttributeでcsvListもActionクラスで実行しています。

上記の<logic:iterateの認識であっていますでしょうか。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2006-10-19 17:11
現在ご提示されている情報だけでは
あなたのコーディングしたロジックに
どんな問題があるのか判断できません。

最低でも
csvList
がどのようなオブジェクトで
どのような形でCSVファイルのデータを保持しているのか
教えていただけませんか。
にぃにぃ
ベテラン
会議室デビュー日: 2006/10/19
投稿数: 70
投稿日時: 2006-10-19 17:43
これがActionクラスです。
---省略----
csvFile="D:/";
BufferedReader csvBReader=new BufferedReader(new FileReader(csvFile));
int i=0;
while((redLine=csvBReader.readLine())!=null &&i!=1)//検証のため1ループ
{ csvToken=redLine.split(",");
for(int j=0; j<8 ;j++)
{ csvList.add(csvToken[j]); }
bForm.setCsvList(csvList);
i++;
}
req.setAttribute("csvList", (csvList));
csvBReader.close();
return mapping.findForward("ok");
}
出力用のJSPは
<%@ page language="java" contentType="text/html; charset=Windows-31J" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<html>
<body>
<logic:iterate id="csv" property="csvList" indexId=i" >
<bean:write name="i" /><bean:write name="csv" /><br>
</logic>
<p><html:link page="/input.jsp">もどる</html:link>
</body>
</html>
としています。何かおかしいでしょうか。色々調べているのですが、
まったく正常表示されません。何かおかしいところがあればご指摘お願い致します。
あすか
ぬし
会議室デビュー日: 2006/07/12
投稿数: 309
投稿日時: 2006-10-20 15:21
CSVファイルが指定されていない気がしますが。

出力元にFormBeanを使われていないのは何故でしょう。
使ったほうが分りやすくいいと思いますが。
にぃにぃ
ベテラン
会議室デビュー日: 2006/10/19
投稿数: 70
投稿日時: 2006-10-23 10:42
コードは省略していますが、CSVファイルの指定はしています。<logic:iterateを
使用しなければ、[○、○・・・・と表示されます。
CSVファイルの読込はできています。

出力元にFormBeanの指定もして実行してみましたが、HTTP404のエラーが
IEから返されます。
にぃにぃ
ベテラン
会議室デビュー日: 2006/10/19
投稿数: 70
投稿日時: 2006-10-23 11:02
お騒がせしました。struts-config.xml内の<form-bean>タグと<action>タグの
FormBean名称が大文字のはずが小文字になっていたことに気づきました。
FormBean名称どおり大文字にして実行したところちゃんと出力するようになりました。
しかし、なぜ、小文字のままだと配列は[・・・、・・・、・・・、・・・]と
表示されていて<logic:iterate>タグを使うと出力されなかったのでしょう。。。
1

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