2012-05-21 20 views
5

से निष्पादन और ऑब्जेक्ट की विधि मैं ईएल से ऑब्जेक्ट की विधि कैसे कॉल करूं?ईएल

वस्तु दें:

public class TestObj { 
    public testObj() { }; 

    public String test() { return "foo"; } 
    public String someOtherMethod(String param) { return param + "_bar"; } 
} 

और obj pageContext

pageContext.setAttribute("t", new TestObj()); 

में जोड़ा जाता है मैं के बराबर कैसे प्रदर्शन करेंगे: ईएल का उपयोग कर

<%= t.test() %> 
<%= t.someOtherMethod("foo") %> 

?

+0

किसी और मुझे के रूप में ही मूर्खतापूर्ण गलती पीड़ित लिए, ध्यान दें एक विधि कॉल के लिए दौर कोष्ठक के रूप में तक पहुँचने सूचियों, नक्शे, आदि के लिए लोगों को वर्ग के लिए विरोध: के साथ या निम्न रूपों में ईएल में बहस के बिना तरीकों –

उत्तर

8

यह ईएल 2.2 के बाद से समर्थित है जो 10 दिसंबर, 200 9 से बाहर हो गया है (2.5 साल पहले से ही पहले!)। ईएल 2.2 सर्वलेट 3.0 के साथ हाथ में हाथ चला जाता है, इसलिए यदि आप एक सर्वलेट के साथ एक सर्वलेट 3.0 कंटेनर (Tomcat 7, Glassfish 3, आदि) को लक्षित 3.0 संगत web.xml जो की तरह लग रहे इस प्रकार

<?xml version="1.0" encoding="UTF-8"?> 
<web-app 
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
    version="3.0"> 

    <!-- Config here. --> 

</web-app> 

तो आप आह्वान कर सकेंगे

${t.test()} 
${t.someOtherMethod('foo')} 
+0

ऐसा लगता है कि मेरा कंटेनर Servlet 2.3 का उपयोग कर रहा है। ओह अच्छा। – empire29

+0

तो आप परीक्षण टोमकैट 5.0 के लिए उपयोग कर रहे हैं? यह भी हो सकता है कि आप वास्तव में टॉमकैट 7.0 चला रहे हैं लेकिन 'web.xml' गलत तरीके से घोषित सर्वलेट 2.3 घोषित किया गया है और इस प्रकार टोमकैट 7.0 सर्वलेट 2.3 फ़ॉलबैक मोडस में चलाएगा। – BalusC

3

इस Method calls in EL के अनुसार अभिव्यक्ति भाषा में विधि कॉल वर्तमान में जेएसआर स्थिति में हैं और अभी तक लागू नहीं हुई हैं। मैं जो कुछ उपयोग करता हूं वह जावाबियन घटकों के लिए कुछ आमंत्रण करने के लिए जेएसटी सुविधाएं है।

public class TestObj { 
    public TestObj() { }; 

    public String getTest() { return "foo"; } 
} 

आप इस वाक्य रचना के साथ getTest() विधि आह्वान कर सकते हैं: उदाहरण के लिए, अगर आप अपने test विधि हस्ताक्षर करने के लिए, संशोधित करने,

${t.test} 

अब अगर आप कुछ पैरामीटर के साथ और अधिक व्यापक तरह की जरूरत है passing- आप ईएल प्रस्ताव की कस्टम विधि सुविधाओं का उपयोग कर सकते हैं। इसके लिए सार्वजनिक वर्ग में घोषित सार्वजनिक स्थैतिक विधियों और एक टीएलडी फ़ाइल भी आवश्यक है। एक अच्छा ट्यूटोरियल here पाया जा सकता है।

अद्यतन:

@BalusC राज्यों के रूप में, बाद में विनिर्देशों अब विधि आमंत्रण समर्थन करते हैं। यदि आप जावा ईई 6 संगत कंटेनर पर तैनाती कर रहे हैं, तो this Oracle Site दिखाता है कि सुविधा का सही तरीके से उपयोग कैसे करें।

+1

आप पुराने तरीके से बाहर हैं। – BalusC

+0

उस के बारे में पता नहीं था। अद्यतन के लिए धन्यवाद! –

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