2011-02-16 8 views
19

क्या जेएसएफ में विभिन्न बैकिंग बीन्स से कई विधियों को कॉल करने का कोई तरीका है?एक ही समय में एकाधिक बैकिंग बीन विधियों को कॉल करें

मेरे पास एक ऐसा एप्लिकेशन है जो उपयोगकर्ता की जानकारी संग्रहीत करता है। मेरे पास कई बैकिंग बीन्स हैं जो शेड्यूल, एड्रेस, फोन आदि में विभाजित हैं।

जब एप्लिकेशन प्रारंभ में लोड करता है तो सबकुछ काम करता है लेकिन चूंकि मेरे सभी विचार टाइप किए गए हैं @ViewScope शेड्यूल, पता, फोन की सूचियां हैं एक नया उपयोगकर्ता प्रदर्शित होने पर भी बनाए रखा।

मुझे शेड्यूल, पता, और फोन सूचियों को मैन्युअल रूप से सेट करने की आवश्यकता है जब उपयोगकर्ता वर्तमान व्यक्ति से देखे जाने वाले व्यक्ति से दूर निकलता है I मुझे एक प्रबंधित समय में प्रत्येक प्रबंधित बीन में एक विधि कॉल करने की आवश्यकता होती है (जब उपयोगकर्ता कमांड लिंक पर क्लिक करता है)।

क्या एक कमांड लिंक पर एकाधिक बीन विधियों को कॉल करना संभव है?

उत्तर

2

आप अपना कमांड लिंक संदर्भ एक विधि कर सकते हैं जो स्वयं सभी आवश्यक विधियों को कॉल करता है।

31
<h:commandLink action="#{jsfBean.submit}" value="execute multiple methods"> 
    <f:actionListener binding="#{jsfBean1.actionListener}"/> 
    <f:actionListener binding="#{jsfBean2.actionListener}"/> 
    <f:actionListener binding="#{jsfBean3.actionListener}"/> 
</h:commandLink> 

उपरोक्त कोड का उपयोग करना, सेम में तरीकों के साथ जब आप commandLink क्लिक पहले प्रस्तुत विधि निष्पादित किया जाएगा ('डिफ़ॉल्ट') actionListener(ActionEvent event)

के हस्ताक्षर है। उसके बाद अन्य सभी actionListeners एक के बाद एक ... आशा है कि मदद करता है निष्पादित किया जाएगा;) यहाँ

+0

यह सहायक था! :) – Nikhil

+0

@ निखिल को यह सुनकर खुशी हुई :) – Selvin

+12

* "ध्यान दें कि जेएसएफ कार्यान्वयन हमेशा कार्यों से पहले एक्शन श्रोताओं को आमंत्रित करता है।" * - [कोर जावासेवर फेस (तीसरा संस्करण)] (http://www.corejsf.com/), पृष्ठ 314. –

0

जवाब मेरे लिए काम कर के करीब थे, लेकिन यह भी च में तरीकों को कोष्टक जोड़ने के लिए किया था: ActionListener:

<h:commandLink action="#{jsfBean.submit}" value="execute multiple methods"> 
    <f:actionListener binding="#{jsfBean1.actionListener()}"/> 
    <f:actionListener binding="#{jsfBean2.actionListener()}"/> 
    <f:actionListener binding="#{jsfBean3.actionListener()}"/> 
</h:commandLink> 
+0

यह केवल आवश्यक है (afaik) यदि आपके सर्वर साइड विधियों में 'actionListener (ActionEvent ईवेंट)' के बजाय '(गैर-डिफ़ॉल्ट') हस्ताक्षर है ... – Kukeltje

+0

आह ठीक है। टिप @ कुक्लेजे के लिए धन्यवाद –

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