2011-08-16 13 views
6

Düz JSP'de ilk öğeyi EL ${form.items[0]} ile alabilirim, ancak bir JSP etiketinde aynı ifade aşağıdaki istisnayı atar:JSTL/JSP etiketindeki String [] özniteliğinden bir öğe nasıl alınır?

javax.el.PropertyNotFoundException: java.lang sınıfında property 0 bulunamadı. Dize

${form.items} değeri [Ljava.lang.String;@315e5b60'dir.

JSP etiketi kodu:

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ attribute name="items" required="true" %> 
${items[0]} 

JSP kodu:

<%@ taglib prefix="t" tagdir="/WEB-INF/tags"%> 
<t:input items="${form.items}"></t:input> 

Belki de öznitelik türünü veya başka bir şeyi unuttum? JSP ve JSP etiketlerinde farklı değerlere ulaşmanın yolu nedir?

cevap

13

Özel etiket özniteliğinin hızlandırılmış türünü belirtmeniz gerekir. Varsayılan olarak, java.lang.String ve JSP kabı, özniteliği etiketinize iletmeden önce bir dizeye zorlar. Böylece String dizininizde toString çağırır.

<%@ attribute name="items" required="true" type="java.lang.String[]" %> 

veya

<%@ attribute name="items" required="true" type="[Ljava.lang.String" %> 

hile yapmak gerekir. ne

<%@ attribute name="items" required="true" type="java.lang.Object" %> 

gerektiği kullanarak yapar ama eğer onlara daha az açıktır.

+0

Teşekkürler, ilk çözüm çalışması (type = "java.lang.String []"). İkincisi - işe yaramadı, daha önce denedim. –

+0

java.lang.Object öğesini kullanarak etiketin hem diziler hem de java.util.List olmasını sağlar. Bu da bazı durumlarda yararlı olabilir. – marcus

İlgili konular