私は、sportMap と呼ばれる Hashtable<Integer, Sport> と、バッキング Bean からの sportIds (List<Integer> sportIds) のリストを持っています。Sport オブジェクトには List<String> equipmentList があります。各スポーツの用具のリストを取得するために、統合 EL を使用して次のことを行うことはできますか?
<h:dataTable value="#{bean.sportIds}" var="_sportId" >
<c:forEach items="#{bean.sportMap[_sportId].equipmentList}" var="_eqp">
<h:outputText value="#{_eqp}"></h:outputText>
<br/>
</c:forEach>
</h:dataTable>
この JSP コードを実行しようとすると、次の例外が発生します。
15:57:59,438 ERROR [ExceptionFilter] 例外の根本原因 javax.servlet.ServletException: javax.servlet.jsp.JspTagException: <forEach> で提供された「アイテム」を反復処理する方法がわかりません。
ここに私の環境のプリントアウトがあります
サーバー: JBossWeb/2.0.1.GA サーブレット仕様: 2.5 JSP バージョン: 2.1 JSTL バージョン: 1.2 Java バージョン: 1.5.0_14
注: 以下は、JSF タグを使用して機能します。これは、sportIds のリストで指定された各スポーツの用具のリストを出力します。
<h:dataTable value="#{bean.sportIds}" var="_sportId" >
<h:outputText value="#{bean.sportMap[_sportId].equipmentList}">
</h:outputText>
</h:dataTable>
c:forEach タグを使用したいと思います。これが可能かどうか誰にもわかりますか?そうでない場合、誰か提案がありますか?最後に、equipmentList.toString(); によって提供されるコンマ区切りのリストではなく、積み重ねられたリストが必要です。(また、toString() をオーバーライドしたくない)。