
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ランキング
-
createImage()を使い コンパイル
-
System.err. printlnとSystem.o...
-
InputStream.read()でタイムア...
-
VBSエラー"オブジェクト型の変...
-
変数を動的に作るには?
-
javaのコンパイルエラーについ...
-
パソコンキーボードで時分秒を...
-
JSPやサーブレットでSystem.out...
-
JavaScriptの変数をjavaのメソ...
-
「配列定数は、イニシャライザ...
-
javaです
-
jspでの二次元配列
-
JButton-背景の透明化
-
VBで作った乱数を一度も重複さ...
-
C#で、あるクラスのメンバーす...
-
int型のゼロ埋め
-
プログラミングの問題です。大...
-
JavaFXでの表内のチェックボッ...
-
StrutsでJSPからListを受け取り...
-
javaで「全角が含まれているか...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
eclipseに記述したjavaファイル...
-
ColabでのPytorchのエラー
-
<forEach> 内で供給された "ite...
-
「例外 *** は対応する try 文...
-
Selenium IDEでexportしたコー...
-
javaでアプレットの描画が出来ない
-
データの外挿について
-
ActionForm form にnullが入っ...
-
(急募)一覧表画面でパスワード...
-
(急募)一覧画面表示がうまくい...
-
(急募)「.csv」ファイルをテー...
-
Java での グローバルIP取得
-
シャットダウンフックが呼ばれない
-
GridBagLayoutについての質問
-
文字列を数式に
-
生年月日と今日の日付から年齢...
-
JTableでスクロールバーが表示...
-
干支の計算で。。。
-
Javaを使ってデジタル時計を作...
-
JAVA 乱数で同じ数字を出さな...
おすすめ情報