2012-07-12 9 views
8

मैं जेएसएफ और प्राइमफेस के लिए बिल्कुल नया हूं और एकाधिक मेनू के साथ एक पूर्ण पृष्ठ लेआउट विकसित करने में कुछ समस्याएं हैं।नेस्टेड प्राइमफेस लेआउट में डायनामिक पेज अपडेट

मुद्दा # 1

इस प्रकार हम बाईं ओर नेस्टेड लेआउट इकाइयों के साथ PrimeFaces 3.3 का उपयोग कर एक पूरे पृष्ठ लेआउट:

:

<p:layoutUnit id="west" position="west" header="Services" resizable="true" closable="true" collapsible="true" effect="drop"> 
      <p:layout>           
       <p:layoutUnit id="inner_center" position="center">       
        <h:form id="formMainMenu"> 
         <ui:include src="#{menuBean.pageToDisplay}.xhtml" /> 
        </h:form>    
       </p:layoutUnit> 
       <p:layoutUnit id="inner_south" size="200" position="south">          
        <h:form id="formStartMenu"> 
         <p:menu> 
          <p:submenu label="Start Menu">          
           <p:menuitem value="Start" actionListener="#{#menuBean.setPageToDisplay('template/menu/start')}" update=":inner_center" />          
          </p:submenu> 
         </p:menu> 
        </h:form> 
       </p:layoutUnit> 
      </p:layout> 
     </p:layoutUnit> 

यहाँ समर्थन सेम है

@ManagedBean(name = "menuBean") 
@SessionScoped 
public class menuBean implements Serializable { 

private String pageToDisplay = "template/menu/main"; 

public String getPageToDisplay() { 
    return this.pageToDisplay; 
} 

public void setPageToDisplay(String pageToDisplay) { 
    this.pageToDisplay = pageToDisplay; 
} } 

जब मैं मेनू Iteem पर क्लिक करता हूं, तो संपूर्ण layoutUnit (inner_c दर्ज करें) गायब हो जाता है। मैंने अजाक्स के साथ फॉर्म और पैनल नियंत्रण के कई संयोजनों की कोशिश की है और दूसरे पृष्ठ और मेनू को लोड करने के लिए नहीं मिल सकता है। शायद जेएसएफ में मेरे सीमित ज्ञान के कारण मेरा दृष्टिकोण गलत है। मुझे उम्मीद है कि यह कुछ आसान है और मैं इसे अभी याद कर रहा हूं।

मेनू से एटम क्रिया, मैं आंतरिक प्राइमफेस मेनू बीन को आंतरिक_सेंटर लेआउट इकाई में लोड करना चाहता हूं .. शायद मुझे ऐसा करने की आवश्यकता नहीं है और केवल मेनू को अजाक्स के माध्यम से कॉल करें?

ISSUE # 2 इन नेस्टेड लेआउट्यून्स के साथ, जब पृष्ठ लोड होता है, तो पैरेंट लेआउट यूटिट हेडर "सेवाएं" पूरी तरह गायब हो जाती है।

<p:layoutUnit id="west" position="west" header="Services" resizable="true" closable="true" collapsible="true" effect="drop"> 

समग्र दृष्टिकोण पर कोई भी मदद या सलाह बहुत सराहना की जाती है !!

धन्यवाद!

+0

कुछ पर्यावरण की जानकारी: Mojara 2.1, प्राइमफेस 3.3, नेटबीन आईडीई 7.0.1 + ग्लासफ़िश –

+0

मैं निश्चित रूप से नहीं कह सकता, लेकिन यह समस्या तब हो सकती है जब सम्मिलित पृष्ठों में एक फॉर्म घटक हो। नेस्टेड फॉर्म समस्याएं पैदा करेंगे। –

+0

धन्यवाद। आप सही हैं .. यह अनुशंसा की जाती है कि लेआउट के अंदर फॉर्म रखे जाएं नियंत्रण नियंत्रण, जो मैंने किया है ... यह भी सुनिश्चित कर रहा है कि लोड किए गए पृष्ठों में कोई फॉर्म टैग मौजूद न हो। मैं ' 'और पैनल समूह का उपयोग करके पुनः प्रयास करने जा रहा हूं। शायद एक संदर्भ बंद है। आदर्श रूप में, मैं एक पृष्ठ लोड करना छोड़ना चाहता हूं और लेआउट में सीधे मेनू रख सकता हूं और मूल्य को पार करके इसे गतिशील रूप से पॉप्युलेट कर सकता हूं। '' .. हालांकि सुनिश्चित नहीं है कि सबसे अच्छा तरीका है। –

उत्तर

2

यह सवाल लोकप्रिय हो रहा है, तो मैं कम से कम समाधान हम कई अन्य स्टैक ओवरफ़्लो क्यू & एक, मेरे अपने प्रयोग, JSF मानकों, BalusC के आधार पर समग्र आवेदन डिजाइन को संभालने के लिए साथ आए हैं साझा करने के लिए मजबूर महसूस, और अनगिनत अन्य लोग और ब्लॉग जिन्होंने सीखने की अवस्था में योगदान दिया है।

पृष्ठभूमि -

हमारे आवेदन एक उद्यम स्तर के सेवा प्रबंधन समाधान है कि एक यूआई और लाइसेंस मॉड्यूल के किसी भी संख्या के साथ जहाज। हमने ओएसजीआई और अन्य भारी आवेदन ढांचे की समीक्षा की, लेकिन कॉन्फ़िगरेशन फाइलों और डेटाबेस सेटिंग्स के माध्यम से हल्के .jar प्रबंधन के साथ एंटरप्राइज़ मेवेन प्रोजेक्ट पर निर्णय लिया। हम MySQL द्वारा समर्थित इकाई ऑब्जेक्ट्स का उपयोग करते हैं, केवल यूआई पर ऑब्जेक्ट्स को पास करते हैं।

समाधान -

हमारे आरंभिक रिलीज के लिए, हम इस लेआउट के आधार पर एक JSF टेम्पलेट वेबसाइट बनाई है: http://www.mkyong.com/jsf2/jsf-2-templating-with-facelets-example/

विचार इस प्रकार है करने के लिए यूआई पूरी तरह से गतिशील होना है:

  1. JSF कोर आवेदन डिजाइन

    • डेटा पर ही आधारित JavaEE उद्यम Maven आवेदन
    • अधिकतर अजाक्स के माध्यम से एकल पृष्ठ प्रसंस्करण
    • सुरक्षा PhaseListener
    • Phaselistener हैंडलिंग त्रुटि (ग्लोबल अजाक्स मुद्दों के साथ मदद करता है)
  2. (ग्लोबल अजाक्स मुद्दों के साथ मदद करता है) सुरक्षा

    • हम ग्लासफ़िश पर वास्तविक-आधारित सुरक्षा का उपयोग कर रहे हैं। जेएसएफ 2.2 के साथ, आप आसानी से निर्देशिका, नियंत्रण, पृष्ठों, ग्रैनुलर रोल प्रबंधन के तरीकों को एनोटेट कर सकते हैं।
  3. नेविगेशन

    • गतिशील रूप से क्षेत्र में उपयोगकर्ता भूमिका के आधार पर एक्सएमएल config से बनाया गया।

    • गतिशील नेविगेशन और रूपों को सभी आवश्यकतानुसार स्कॉप्ड बीन्स के माध्यम से प्रबंधित किया जाता है। इस कड़ी में वास्तविक समस्याओं को इतने सारे अच्छे जवाब आप का सामना करेंगे शामिल हैं: http://balusc.blogspot.com/2011/09/communication-in-jsf-20.html

  4. टेम्पलेट सामग्री और नियंत्रित करता है

    • सामग्री संस्थाओं की आबादी वस्तुओं के माध्यम से वितरित किया जाता है। अधिकांश डेटा डेटाबेस से आता है। स्थानीय कॉन्फ़िगरेशन फ़ाइलों के माध्यम से केवल मूल एप्लिकेशन प्रारंभ किया जाता है।

    • नियंत्रण पीढ़ी किसी भी ऑब्जेक्ट डेटा के लिए एक XML डेटा फ़ाइल के माध्यम से किया जाता है जिसे UI के माध्यम से प्रबंधित करने की आवश्यकता होती है।

आप जानते हैं, खरगोश की मांद में कई सुरंगों है। यदि हमारे एप्लिकेशन डिज़ाइन का कोई भी हिस्सा है जो आपके जैसा दिखता है और आप अधिक जानकारी और/या कोड नमूने चाहते हैं, तो कृपया बेझिझक पूछें और मैं सीखने के लिए दूसरों के लिए इस थ्रेड पर पोस्ट करूंगा।

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