2

モデルを含むカスタム オブジェクトのリストと、ビューとしての JSP を送信しています。カスタム オブジェクトには というプロパティがpropertiesあり、それはJSONObjectです。このプロパティの値は次のとおりです。

{"services":[{"name":"abcd"},{"name":"efgh"}]}

今、 JSONArray を反復処理したいと思い[{"name":"abcd"},{"name":"efgh"}]ます。これがループするために私がやっていることです

<c:if test="${not empty customObject.services}">
                 <c:forEach items="${customObject.services.getJSONArray(\"services\")}" var="Service" varStatus="rowCounterCh">
                     <li>${Service.name}</li>
                  </c:forEach>
 </c:if>

しかし、これは JSONArray を反復処理できません。次のエラーが発生しています。

javax.servlet.ServletException: javax.servlet.jsp.JspTagException: Don't know how to iterate over supplied "items" in &lt;forEach&gt;

では、JSONArray を反復処理するにはどうすればよいでしょうか? 助けてください

4

2 に答える 2

2

各タグには、アイテムの基本インターフェイスが必要です。JSONArray はjava.util.Collectionでもjava.util.Iterableでもありません。したがって、各タグの実装では、 items 属性に渡すコレクションを反復処理できません。

この問題を解決するには、次の方法があります。

  1. JSP で HTML リスト ビューを生成します。
  2. またはリスト項目は JSONArray をcustomObject.services.getJSONArrayメソッドの適切なコレクションに変換します。gson 実装の JSONArray には、Iterable インターフェースを実装しているため、メソッド: iterator が必要です。#getJSONArray(String) メソッドで JSONArray の代わりにcom.google.gson.JSONArray#iterator()を返すようにしてください。

より詳しい説明

于 2013-01-22T09:52:31.163 に答える