Collection
オブジェクトの属性aを受け入れ、それらをJSON形式の配列として出力するカスタムJSPタグを実装しようとしています(の各オブジェクトは、そのオブジェクトのJSON形式の表現を返すメソッドをCollection
提供します)。getJsonString()
私は自分のタグをそのように実装しています:
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ attribute name="objects" required="true" rtexprvalue="true" %>
<c:set var="output" value="" />
<c:forEach var="obj" items="${objects}">
<c:if test="${! empty showComma}">
<c:set var="output" value="${output}, " />
</c:if>
<c:set var="output" value="${output}${obj.jsonString}" />
<c:set var="showComma" value="yes" />
</c:forEach>
[${output}]
...そして私は次のようなことをしてそれを使用できるようにしたいと思っています:
<myTaglib:jsonArray objects="${myCollection}" />
ただし、タグを使用しようとすると、次のようなスタックトレースが表示されます。
javax.el.PropertyNotFoundException: Property 'jsonString' not found on type java.lang.String
つまり、式について不平を言ってい${obj.jsonString}
ますが、私は間違いなくCollection
文字列を渡していません。さらに、これを変更すると${obj}
、正しいオブジェクトタイプが出力され、カスタムタグのコードをコピーして使用したいJSPに貼り付けると、正しく機能するため、実際には何がわかりません。ここで起こっています。
をカスタムタグに渡す方法に問題があるとCollection
思いますが、それが何であるかを理解できません。何か案は?