2011-08-16 10 views
6

सादा JSP में मैं ईएल ${form.items[0]} से पहले आइटम प्राप्त कर सकते हैं में से एक आइटम प्राप्त करने के लिए, लेकिन एक JSP टैग में एक ही अभिव्यक्ति निम्न अपवाद फेंकता है:कैसे String [] JSTL/JSP टैग में विशेषता

javax.el.PropertyNotFoundException: वर्ग java.lang.String

${form.items} का मूल्य [Ljava.lang.String;@315e5b60 है में संपत्ति 0 नहीं मिल सका।

JSP टैग कोड है:

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

JSP कोड है:

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

शायद मैं विशेषता या कुछ और के प्रकार भूल गए? जेएसपी और जेएसपी टैग में मूल्यों को अलग करने का तरीका क्यों है?

उत्तर

13

आपको कस्टम टैग विशेषता का त्वरित प्रकार निर्दिष्ट करने की आवश्यकता है। डिफ़ॉल्ट रूप से, यह java.lang.String है, और जेएसपी कंटेनर आपके टैग पर जाने से पहले एक स्ट्रिंग में विशेषता को जोड़ता है। इस प्रकार यह आपके स्ट्रिंग सरणी पर स्ट्रिंग को कॉल करता है।

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

या

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

चाल करना चाहिए। यदि न तो करता है,

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

का उपयोग करना चाहिए, लेकिन यह कम स्पष्ट है।

+0

धन्यवाद, पहला समाधान काम करता है (प्रकार = "java.lang.String []")। दूसरा - काम नहीं करता, मैंने पहले कोशिश की। –

+0

java.lang.Object का उपयोग करके टैग को सरणी और java.util.List दोनों प्राप्त करने की अनुमति मिलती है। यह कुछ मामलों में भी उपयोगी हो सकता है। – marcus

संबंधित मुद्दे