6
我試圖實現一個自定義JSP標記,它接受對象的屬性Collection
並將它們輸出爲JSON格式的數組(Collection
中的每個對象都提供了一個getJsonString()
方法返回該對象的JSON格式的表示)。我有我的標籤實現爲這樣:JSP/JSTL:將集合傳遞給自定義標記
<%@ 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
傳遞給自定義標記存在一些問題,但我無法弄清楚它是什麼。有任何想法嗎?