
JSP、servletを実行すると
以下のエラーメッセージが
表示されてしまいます。
----------------------------------
javax.servlet.jsp.JspTagException:
<forEach> 内で供給された "items" を反復処理する方法が不明です
----------------------------------
ファイル構成は以下になります。
アプリケーションルート\WEB-INF\classes\Rssdata.java
----------------------------------
public class Rssdata{//データ格納用クラス
public String[] title = new String[20];
public String[] link = new String[20];
public String[] day = new String[20];
}
----------------------------------
アプリケーションルート\WEB-INF\classes\RssOriginal.java
----------------------------------
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
import java.util.*;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.syndication.feed.synd.SyndEntry;
import com.sun.syndication.feed.synd.SyndFeed;
import com.sun.syndication.fetcher.FeedFetcher;
import com.sun.syndication.fetcher.impl.HttpURLFeedFetcher;
public class RssOriginal extends HttpServlet {
private static final String URL= "http://hoge.net/index20.rdf";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
FeedFetcher ff = new HttpURLFeedFetcher();
SyndFeed feed=null;
int i = 0;//for文用変数
Rssdata rssdata = new Rssdata();//rssデータ格納用クラス
try {
feed = ff.retrieveFeed(new URL(URL));
} catch (Exception e) {
throw new ServletException(e);
}
Calendar cal = new GregorianCalendar();
for(SyndEntry entry : (List<SyndEntry>)feed.getEntries()){
entry.getPublishedDate();
rssdata.day[i] = cal.get(Calendar.YEAR) + "/" + (cal.get(Calendar.MONTH) + 1) + "/" + cal.get(Calendar.DAY_OF_MONTH);
rssdata.link[i] = entry.getLink();
rssdata.title[i] = entry.getTitle();
/*
System.out.println(rssdata.day[i]);
System.out.println(rssdata.link[i]);
System.out.println(rssdata.title[i]);
System.out.println();
*/
i++; }
request.setAttribute("feed", rssdata);
this.getServletContext().getRequestDispatcher("/chap4/rss/index.jsp").forward(request,response);
}
}
----------------------------------
アプリケーションルート\chap4\rss\index.jsp
----------------------------------
<html>
<head>
<title>RSS情報の展開</title>
</head>
<body>
<h1 style="color:white;background-color:#525D76;font-size:22px;">
RSS情報の展開</h1>
<ul>
<c:forEach var="item" items="${requestScope['feed']}">
<li><a href="${item['link']}">${item['title']}</a></li>
</c:forEach>
</ul>
</body>
</html>
----------------------------------
またこちらのページなど検索で色々調べましたが
http://kamakura.cool.ne.jp/oppama/ssja/taglibs-c …
理屈はなんとなくイメージできるのですが
具体的な解決方法がわかりませんでした。
宜しくお願い致します。
A 回答 (1件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
itemsで指定してる「${requestScope['feed']}」がコレクションではないからではないですか?
forEachって、コレクションの各要素に対して、何らかの処理をするものだと思うので、rssdata自身がコレクションで、その中の各要素がtitleやらlinkやらを保持している形でなければならないと思います。
ご回答ありがとうございます。
>itemsで指定してる「${requestScope['feed']}」が
>コレクションではないからではないですか?
なるほど。forEachはコレクションに対してのものだったのですね。
import java.util.HashMap;
ソースの↑この部分で、すでにご存知かもしれませんが
このサンプル実はもともとHashMapを使用したもので
(HashMapはコレクションだったんですね。
本やサイト見てるのですが、HashMapがなんなのか
根本理解できていません。)
HashMapはキーと値の2つの要素しか保持できないため
クラスにして値を保持させることにしました。
コレクションで値を3種類保持できるものか
クラスの要素を順番に読み込めるjspのアクションタグ
がわかれば解決できると思うのですが
どのようなキーワードで検索すればよいかがわかりません。
参考になる検索キーワード、サイト、本など
ありましたらご教授願いたく思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
かなり初歩的なプログラミング...
-
プログラミングの問題です。大...
-
javaのプログラミングで作るRPG...
-
コンテンツダウンロード時のプ...
-
jspでの二次元配列
-
配列数を超えてアクセスしたと...
-
オブジェクトの中のプロパティ...
-
System.out.printlnの出力先
-
IF関数でEmpty値を設定する方法。
-
System.exit()の値を取得したい
-
ページング
-
配列にnullを代入すると、null...
-
変数を動的に作るには?
-
VBAで配列の計算
-
パソコンキーボードで時分秒を...
-
byte型のマイナスの扱いについて
-
Excel VBAで配列の途中から(X)M...
-
決められて時間が経過するとア...
-
javaで2重forループを使い 123 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
「例外 *** は対応する try 文...
-
<forEach> 内で供給された "ite...
-
setAttribute(String, int)は適...
-
干支の計算で。。。
-
生年月日と今日の日付から年齢...
-
アプレットの動作テストができない
-
importするには java.io.*; imp...
-
アプレットでスクロールバーを...
-
JPanelについて
-
Java初心者ですが・・・
-
JTableでスクロールバーが表示...
-
main()メソッドが無いコード
-
Javaで常駐するソフトを作って...
-
どうしてもプログラムが動いて...
-
ActionForm form にnullが入っ...
-
JFrame の再表示を禁止したい。
-
Javaアプリケーションのアイコ...
-
javaでスタート画面を作ってい...
-
Java Applet での虫食い算での質問
おすすめ情報