यह आपको एक पोस्टबैक पर अन्य देखने के लिए एक से नेविगेट कर रहे है, तो क्या होगा । एक दृश्य स्कॉप्ड बीन अनुरोध से बंधे नहीं है, लेकिन एक दृश्य के लिए। तो जब आप एक नए दृश्य पर नेविगेट करते हैं, तो इसे दृश्य स्कैन बीन का एक नया नया उदाहरण मिलेगा। यह उसी बीन उदाहरण का पुन: उपयोग नहीं करेगा जो पिछले दृश्य से जुड़ा हुआ है।
मुझे लगता है कि attivita
बीन प्रारंभिक दृश्य पर बनाया गया है और पोस्टबैक पर पुन: उपयोग किया गया है। मैं समझता हूं कि nota
बीन नए दृश्य से जुड़ा हुआ है जहां आप नेविगेट कर रहे हैं। जब attivita
इंजेक्शन करते हैं, तो यह एक नया और विशिष्ट उदाहरण प्राप्त करेगा, भले ही एक ही अनुरोध में एक और उदाहरण हो। यह सब उम्मीद है (और स्वीकार्य रूप से थोड़ा अचूक) व्यवहार।
इसके लिए कोई मानक जेएसएफ समाधान नहीं है। सीडीआई @ConversationScoped
के साथ हल करता है (बीन जीवन तब तक रहता है जब तक आप इसे स्पष्ट रूप से रहने के लिए कहते हैं) और सीडीआई एक्सटेंशन माईफेसेस सीओडीआई @ViewAccessScoped
(बीन लाइफ जब तक नेविगेटेड व्यू संदर्भित करता है) के साथ थोड़ा आगे जाता है।
हालांकि आप अनुरोध दायरे में एक विशेषता के रूप में बीन को संग्रहीत करके इसे काम कर सकते हैं।
@ManagedBean
@ViewScoped
public class Attivita implements Serializable {
public String submit() {
FacesContext.getCurrentInstance().getExternalContext()
.getRequestMap().put("attivita", this);
return "nota";
}
}
और
@ManagedBean
@ViewScoped
public class Nota implements Serializable {
private Attivita attivita;
@PostConstruct
public void init() {
attivita = (Attivita) FacesContext.getCurrentInstance().getExternalContext()
.getRequestMap().get("attivita");
}
}
ध्यान दें कि यह नहीं बल्कि hacky है। कंक्रीट कार्यात्मक आवश्यकता के आधार पर बेहतर समाधान हो सकते हैं। यह भी ध्यान रखें कि आपको nota
वांछित Attivita
बीन उदाहरण #{nota.attivita}
और #{attivita}
के रूप में संदर्भ संदर्भ में होना चाहिए, क्योंकि यह आपको पहले से समझाए गए कारणों के लिए एक नया और अलग उदाहरण देगा।
सही प्रतिक्रियाओं को चिह्नित करने के बारे में परवाह करें।स्टैक ओवरफ़्लो न केवल उन सवालों के बारे में है जो उत्तर के बारे में हैं। –