2008-11-14 10 views
100

एक JSP पेज लेखन, <c:out> वास्तव में क्या करता है? मैंने देखा है कि दोनों निम्नलिखित एक ही परिणाम है: JSP केJSP: JSTL के <c:out> टैग

<p>The person's name is <c:out value="${person.name}" /></p> 
<p>The person's name is ${person.name}</p> 

उत्तर

144

c:out ताकि आप क्रॉस-साइट स्क्रिप्टिंग से बच सकते हैं एचटीएमएल पात्रों निकल जाता है।

अगर person.name = <script>alert("Yo")</script>

स्क्रिप्ट दूसरे मामले में निष्पादित किया जाएगा, लेकिन c:out

+1

केवल अगर 'escapeXML' यह सत्य पर सेट है (सुनिश्चित नहीं है कि यह डिफ़ॉल्ट रूप से है) –

+16

मुझे विश्वास है कि यह डिफ़ॉल्ट रूप से सत्य है। –

+7

एनबी यह XML से बच नहीं है HTML। जेएसटीएल की अधिक परेशान subtleties में से एक। मैं हमेशा अपना खुद का एचटीएमएल एस्केप ईएल एफएन लिखता हूं। –

3

पुराने संस्करण दूसरा वाक्य रचना का समर्थन नहीं किया।

+0

डाउनवोट क्यों? – Thilo

5

c:out नहीं का उपयोग करते समय एक डिफ़ॉल्ट मान बताए अगर person.name का मान शून्य होता है के लिए एक विशेषता है।

स्रोत: out (TLDDoc Generated Documentation)

116

के रूप में विल वैगनर, jsp आप हमेशा उत्पादन गतिशील पाठ करने के लिए c:out का उपयोग करना चाहिए के पुराने संस्करण में कहा।

इसके अलावा, इस सिंटैक्स का उपयोग:

<c:out value="${person.name}">No name</c:out> 

आप पाठ "कोई नाम नहीं" प्रदर्शित कर सकते हैं जब नाम व्यर्थ है।

+22

कूल है! मैं नहीं जानता था कि। –

+0

सहमत, ठंडा। शिक्षण और मदद के लिए धन्यवाद। मैं या तो नहीं जानता था। चीयर्स! –

+18

या gmustudent

5

आप स्पष्ट रूप से एक विशेषता escapeXml मान सही पर बराबर होती है का उपयोग करके Xml संस्थाओं के भागने सक्षम कर सकते हैं। एफवाईआई, यह डिफ़ॉल्ट रूप से "सत्य" है।

+0

कुछ उदाहरण कोड वास्तव में इस उत्तर को पूरा करने में मदद करेंगे। – RachelC

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