2012-03-08 12 views
12

से प्रबंधित बीन विधि को कॉल करना मेरे पास क्लाइंट-साइड छवि मानचित्र के साथ एक से अधिक अनुभाग परिभाषित किए गए हैं। मुझे <area> ऑनक्लिक विशेषता से प्रबंधित बीन में एक विधि कॉल करने की आवश्यकता है।जावास्क्रिप्ट

यह काम नहीं करता है:

<area id="ReviewPerson" shape="rect" coords="3, 21, 164, 37" href="#" 
    onclick="#{personBean.method}" alt="Review Person" id="reviewPersonArea" 
    title="Review Person" /> 

मेरे हाथ छवि मानचित्र (दुर्भाग्य से) पर बाँध दिया जाता है के बाद से, मैं कैसे <area> टैग के भीतर से एक प्रबंधित सेम विधि कॉल कर सकते हैं?

उत्तर

16

आपके पास कुछ विकल्प हैं। यदि आप जेएसएफ 2.0 का उपयोग कर रहे हैं तो आप इन क्षेत्र टैग के चारों ओर एक समग्र घटक बना सकते हैं।

सबसे आसान तरीका हालांकि एक छिपी हुई जेएसएफ इनपुट बटन का आह्वान करना होगा।

<h:commandButton id="hdnBtn" actionListener="#{personBean.method}" style="display: none;" /> 

यह पृष्ठ है कि आप जावास्क्रिप्ट से पहुँच सकते हैं और अपने click घटना आह्वान कर सकते हैं पर एक input HTML तत्व के रूप में प्रस्तुत करना होगा।

function doClick(){ 
    var button = AdfPage.PAGE.findComponentByAbsoluteId("aButton"); 
    ActionEvent.queue(button,true); 
} 
+0

यूप, ऐसा करने के लिए एकमात्र चीज प्रतीत होती है। सहायता के लिए धन्यवाद। – Jason

+0

** कार्रवाईसूची के बजाय **, यदि हम ** कार्रवाई ** विशेषता का उपयोग करते हैं तो प्रबंधित बीन्स में रीडायरेक्ट करना आसान होगा। [रीडायरेक्ट पद्धति] (https://stackoverflow.com/a/6026401/4067157) actionListener – snAtchnAren

3

आप सीवन का उपयोग करते हैं, दूरस्थ आपके लिए यह कार्य कर सकते हैं: http://docs.jboss.org/seam/2.2.0.GA/reference/en-US/html/remoting.html

एक और दृष्टिकोण बाकी सेवाओं के रूप में तरीकों का पर्दाफाश करते होगा, और jQuery की तरह कुछ का उपयोग कर अपने जावास्क्रिप्ट से उन्हें कहते हैं। इस दृष्टिकोण पर एक अच्छा लेख यहां दिया गया है: http://coenraets.org/blog/2011/12/restful-services-with-jquery-and-java-using-jax-rs-and-jersey/

+0

के बाद से आवेदन या तो दृष्टिकोण के बिना बनाया गया है मैं नहीं काफी क्या जरूरत है, लेकिन जब से वे upvoted सभ्य विचार हैं और मेरी इच्छा है कि हम इसे एक आरईएसटी सेवा के रूप में कर सकें। – Jason

3

आप पूरा एडीएफ चाहते हैं समाधान आप इस कोशिश कर सकते हैं चेहरे। आप एक नाम विशेषता के साथ remoteCommand उपयोग करें, और जावास्क्रिप्ट से उस नाम फोन है, तो:

<area... onclick="somejavascript();"... /> 

<p:remoteCommand name="myCommand" actionListener="#{personBean.method}" style="display: none;" /> 

जावास्क्रिप्ट:

function somejavascript(){ 
    myCommand(); 
} 
17

आप primefaces उपयोग करते हैं, आप jQuery की जरूरत नहीं है:

onclick="jQuery('#form:hdnBtn').click();" 
+6

के साथ काम नहीं कर रहा है मुझे अतिरिक्त कुछ जावास्क्रिप्ट() विधि क्यों चाहिए? क्या हम 'onclick = "myCommand();" 'नहीं लिख सकते हैं? – Falco

+1

आप बिल्कुल सही हैं। –

+1

@ फाल्को ऑनक्लिक = "myCommand()" केवल व्यक्ति को निष्पादित करने के लिए व्यक्ति बन जाएगा। विधि। रिमोट कमांड तब होता है जब हमें पहले जावास्क्रिप्ट में कुछ निष्पादित करने की आवश्यकता होती है, और केवल तब बीन विधि को कॉल करें। – dennisdeems