2012-08-29 10 views
7

मुझे एप्लिकेशन स्टार्ट अप पर जेएसएफ पेज घटक पेड़ तक पहुंचने की आवश्यकता है। मुझे यह स्रोत नेटxhtml फ़ाइल से जेएसएफ व्यू/घटक पेड़ बनाना

UIViewRoot viewRoot = context.getApplication().getViewHandler().createView(context, "/path/to/some.xhtml"); 

पर परिणाम मिला लेकिन परिणामस्वरूप व्यू रूट में कोई बच्चा नहीं है। क्या कोई जानता है कि ऐसा करने का सबसे अच्छा तरीका क्या है?

धन्यवाद।

उत्तर

4

आप दृश्य को भूल गए। इसके लिए आप ViewDeclarationLanguage#buildView() का उपयोग कर सकते हैं। यहाँ अपने javadoc (जोर मेरा) के एक उद्धरण है:

तर्क UIViewRootcreateView(javax.faces.context.FacesContext, java.lang.String), के लिए एक कॉल के माध्यम से बनाया गया होगा जो बच्चों की जगह ले करने के लिए कारण के लिए किसी भी इस VDL क्रियान्वयन के लिए विशिष्ट कार्य करें।

इस प्रकार, इस करना चाहिए:

String viewId = "/path/to/some.xhtml"; 
FacesContext context = FacesContext.getCurrentInstance(); 
ViewHandler viewHandler = context.getApplication().getViewHandler(); 

UIViewRoot view = viewHandler.createView(context, viewId); 
viewHandler.getViewDeclarationLanguage(context, viewId).buildView(context, view); 
// view should now have children. 

आप वैसे भी ViewDeclarationLanguage#createView() सीधे ViewHandler#createView() आशुलिपि के बजाय दृश्य बनाने के लिए उपयोग कर सकते हैं।

String viewId = "/path/to/some.xhtml"; 
FacesContext context = FacesContext.getCurrentInstance(); 
ViewDeclarationLanguage vdl = context.getApplication().getViewHandler().getViewDeclarationLanguage(context, viewId); 

UIViewRoot view = vdl.createView(context, viewId); 
vdl.buildView(context, view); 
// view should now have children. 
संबंधित मुद्दे