आप निर्देशों के अंदर 'आउट' चर (और न ही किसी अन्य "पूर्ववर्ती" स्क्रिप्टलेट चर का उपयोग नहीं कर सकते हैं।
जेएसपी पृष्ठ का अनुवाद आपके वेबसर्वर द्वारा जावा सर्वलेट में किया जाता है। उदाहरण के लिए, स्क्रिप्टलेट्स के अंदर सबकुछ (जो "<%" शुरू करता है), सभी स्थैतिक एचटीएमएल के साथ, एक विशाल जावा विधि में अनुवाद किया जाता है जो आपके पेज को लाइन से लाइन करता है, जिसे "आउट" नामक जेएसपीवाइटर उदाहरण में लिखा जाता है। यही कारण है कि आप सीधे "स्क्रिप्टलेट्स" पैरामीटर में "आउट" पैरामीटर का उपयोग कर सकते हैं। निर्देश, दूसरी ओर (जो "<%" से शुरू होता है)) अलग जावा विधियों के रूप में अनुवादित हो जाते हैं।
उदाहरण के लिए, एक बहुत ही सरल पेज (यह foo.jsp कॉल):
:
<html>
<head/>
<body>
<%!
String someOutput() {
return "Some output";
}
%>
<% someOutput(); %>
</body>
</html>
कुछ इस तरह (स्पष्टता के लिए नजरअंदाज कर दिया विस्तार का एक बहुत कुछ के साथ) के लिए देख हो जाएंगे
public final class foo_jsp
{
// This is where the request comes in
public void _jspService(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException
{
// JspWriter instance is gotten from a factory
// This is why you can use 'out' directly in scriptlets
JspWriter out = ...;
// Snip
out.write("<html>");
out.write("<head/>");
out.write("<body>");
out.write(someOutput()); // i.e. write the results of the method call
out.write("</body>");
out.write("</html>");
}
// Directive gets translated as separate method - note
// there is no 'out' variable declared in scope
private String someOutput()
{
return "Some output";
}
}
स्रोत
2008-09-26 12:09:28
आपके अच्छे उत्तर के लिए धन्यवाद, हालांकि यह वह नहीं है जिसे मैं ढूंढ रहा हूं। – ansgri
कुछ आउटपुट को कॉल आउट.write कथन में नहीं रखा जाएगा जब तक आप अभिव्यक्ति वाक्यविन्यास <%= %> का उपयोग नहीं करते। जब आप स्क्रिप्टलेट सिंटैक्स का उपयोग करते हैं तो यह केवल इनलाइन डाला जाता है। –
परडोजा का जवाब मेरे लिए काम करता था लेकिन ऐसा नहीं करता है। – mr5