2011-06-10 14 views
6

Nesnelerin bir Collection özniteliği olarak kabul edilen özel bir JSP etiketini uygulamaya çalışıyorum ve bunları JSON biçimli bir dizi olarak çektim (her bir nesne Collection ürününü sağlar. Bu nesnenin JSON biçimli bir temsilini döndüren getJsonString() yöntemi.JSP/JSTL: Bir Koleksiyonu Özel Bir Etikete Aktarma

<%@ 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}] 

... ve benzeri bir şey yaparak kullanmak mümkün istiyorum: Ben etiket gibi hayata geçirdik

<myTaglib:jsonArray objects="${myCollection}" /> 

Ben ancak etiketi kullanmayı deneyin, ben bir yığın izleme sözü olsun:

javax.el.PropertyNotFoundException: Property 'jsonString' not found on type java.lang.String 

Yani ${obj.jsonString} ifadesi hakkında şikayetçi, ama kesinlikle dizeleri bir Collection geçen değilim. Üstelik, ${obj} olarak değiştirirseniz, çıkışta doğru nesne türlerini görüyorum ve özel etiketimin kodunu kullanmak istediğim JSP'ye kopyalayıp yapıştırdığımda, düzgün çalışıyor, bu yüzden emin değilim Burada neler oluyor.

Collection özel etiketine nasıl geçtiğimle ilgili bir sorun olduğunu varsayalım, ama ne olduğunu anlayamıyorum. Herhangi bir fikir? Ben çözüm buldu

cevap

6

, ben gibi nitelik ilanına type="java.util.Collection" eklemek için gerekli:

<%@ attribute name="objects" required="true" rtexprvalue="true" type="java.util.Collection" %> 

... Java kendi başına anlamaya yeterince akıllı olacağını düşündüm olurdu, ama görünüşe göre öyle değil.

İlgili konular