2009-12-10 15 views
6

पर एक से अधिक समर्थन सेम मैं कुछ पढ़ने किया है और खेल रहे हैं और मैं अभी भी कुछ सवाल मुझे उम्मीद थी किसी का जवाब हो सकता है है हैJSF एक पृष्ठ

तो, मैं एक भी JSF पेज में दो या अधिक समर्थन सेम का उपयोग कर सकते हैं?

<h:intputText value="#{myFirstBean.firstProperty}" /> 
<h:intputText value="#{mySecondBean.secondProperty}" /> 

यदि मैं कर सकता हूं, तो मुझे ऐसा क्यों नहीं करना चाहिए? (मुझे लगता है कि मुझे नहीं करना चाहिए, क्योंकि कोई भी नहीं करता)

यदि मैं नहीं कर सकता, क्यों?

इसके अलावा, मैंने कुछ ऐसा लिखा है जैसे "पृष्ठ लोड पर फ्रेमवर्क बैकिंग बीन को तुरंत चालू करेगा, और यदि यह पोस्टबैक है तो इसे पॉप्युलेट करें"। वे कहते हैं बैकिंग बीन लेकिन मैं समझ नहीं पा रहा हूं कि ढांचे को कौन सा बैकिंग बीन तत्काल करने के लिए जानता है।

उत्तर

4

के कुछ नियम स्पष्ट करते हैं:

  • कामयाब सेम JavaBeans घटक है कि आप कामयाब सेम सुविधा see
  • समर्थन सेम का उपयोग कर कॉन्फ़िगर कर सकते हैं, एक जावा सर्वर चेहरे हैं प्रबंधित सेम कि के साथ जुड़े रहे हैं यूआई घटकों को किसी विशेष पृष्ठ में उपयोग किया जाता है see

तो, हाँ आप हमें ई एक या अधिक प्रबंधित बीन्स एक एकल जेएसएफ पृष्ठ में, लेकिन विभाजित यूआई घटकों के बाइंडिंग, श्रोताओं, तर्क इत्यादि जो एक पृष्ठ से संबंधित हैं दो या दो से अधिक बैकिंग बीन्स में अभी भी सकारात्मक है लेकिन बहुत अवांछनीय है और इससे आपको कई समस्याएं और बुरी समस्याएं हो सकती हैं कोड।

+5

सूर्य से यह परिभाषा काफी अपारदर्शी है।मैं कहूंगा: एक बैकिंग बीन एक जावा (मॉडल) वर्ग है जो एक दृश्य से जुड़ा हुआ है, एक प्रबंधित बीन इस वर्ग का * उदाहरण * है जो * निश्चित * दृश्य और दायरे से जुड़ा हुआ है। वास्तव में – BalusC

+1

। कई डेवलपर्स दोनों शर्तों को भ्रमित करते हैं। जब मैं इस वर्ग को जेएसएफ पेज के उद्देश्य पर बनाया जाता है तो मैं स्थिति में 'बैकिंग बीन' शब्द का उपयोग करता हूं। अन्य बीन्स (जैसे डेटा मॉडल बीन्स) के लिए मैं टर्म बीन्स का उपयोग करता हूं। – cetnar

3

क्यों नहीं? यह करने के लिए एक पूरी तरह से वैध बात है। आम तौर पर, एक पृष्ठ को एक बीन (अच्छी संरचना के लिए) से जोड़ा जाना चाहिए, लेकिन यदि आप चाहते हैं, उदाहरण के लिए, प्रत्येक पृष्ठ पर वर्तमान समय दिखाने के लिए, आप अन्य 0 चीजों के साथ अपने timeBean.currentTime को संदर्भित करने के लिए स्वतंत्र हैं पाठ्यक्रम, शामिल/templating का उपयोग कर यहां बेहतर है)।

+0

मैं अभी भी यह समझने की कोशिश कर रहा हूं कि फ्रेमवर्क कैसे तय करता है कि जीईटी अनुरोध में पृष्ठ प्रदर्शित करते समय कौन से सेम तत्काल हैं। मुझे लगता है कि बीन तत्काल हो जाने पर "कब" पूछना सही होगा? मुझे पहली पहुंच पर विचार करना होगा .. –

+1

प्रबंधित पृष्ठ में उपयोग किए जाने पर प्रबंधित बीन्स ढांचे द्वारा बनाए जाते हैं। निस्संदेह हम अनुरोध दायरे सेम और सत्र बीन्स की बात कर रहे हैं जो अभी तक बाहर नहीं निकलते हैं। – cetnar

1

अन्य प्रश्नों का उत्तर पहले ही दिया जा चुका है। हालांकि:

इसके अलावा, मैंने कुछ ऐसा लिखा है जैसे "पृष्ठ लोड पर फ्रेमवर्क बैकिंग बीन को तुरंत चालू करेगा, और यदि यह पोस्टबैक है तो इसे पॉप्युलेट करें"। वे बैकिंग बीन कहते हैं लेकिन मुझे समझ में नहीं आ रहा है कि ढांचे को पता है कि किस बैकिंग बीन को तत्काल करने के लिए।

बीन्स उनके नाम से हल हो जाते हैं। उदाहरण के लिए, #{myFirstBean.firstProperty} 'myFirstBean' नामक बीन की तलाश करता है (कक्षा MyFirstBean का एक उदाहरण)। आप के रूप में नाम समायोजित कर सकते हैं:

@ManagedBean(name = "foo") 
public class SomeClass { ... } 

तो फिर तुम संदर्भ सकता #{foo.firstProperty} के माध्यम से है।

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