2010-10-26 4 views
5

मान लें कि मैं <rich:tabPanel> घटक के भीतर <rich:tab> तत्वों का एक चर सेट सेट करना चाहता हूं। इसलिए मैंने ऐसा करने की कोशिश की:गतिशील रूप से <rich:tab> तत्व बनाने का कोई तरीका है?

<rich:tabPanel switchType="client" ...> 
    <ui:repeat value="#{myBean.myTabs}" var="tab"> 
     <rich:tab name="#{tab.name}" label="#{tab.label}"/> 
    </ui:repeat> 
</rich:tabPanel> 

लेकिन यह काम नहीं किया, क्योंकि कोई टैब प्रस्तुत नहीं किया गया है।

j_id174: tab panel has no enabled or rendered tabs! 

यह समस्या उदाहरण here के लिए, दूसरों के लोगों द्वारा सामना किया जा रहा है: मैं भी लॉग में निम्न संदेश मिला है।

इसलिए पिछले धागे द्वारा सुझाए गए अनुसार, मैंने को <c:forEach> द्वारा प्रतिस्थापित किया लेकिन समस्या अभी भी होती है।

<rich:tabPanel switchType="client" binding="#{tabNavigationBean.tabPanel}" 
</rich:tabPanel> 

और फिर मेरी जावा सेम में:

private HtmlTabPanel tabPanel; // + getter and setter 

public void setTabPanel(HtmlTabPanel tabPanel) { 
    this.tabPanel = tabPanel; 
    if (tabPanel != null) { 
     createTabs(); 
    } 
} 

private void createTabs() { 
    Application application = FacesContext.getCurrentInstance().getApplication(); 
    HtmlTab newTab = null; 
    for (DedicatedPageTab dpt : getDedicatedPageTabs()) { 
     newTab = (HtmlTab) application.createComponent(HtmlTab.COMPONENT_TYPE); 
     newTab.setLabel(dpt.getLabel()); 
     newTab.setName(dpt.getName()); 
     tabPanel.getChildren().add(newTab); 
    } 
} 

इस कोड काम कर रहा है


मैं अपने <rich:tabPanel> घटक के binding विशेषता का उपयोग कर इस समस्या को हल करने के लिए एक रास्ता है

हालांकि, मेरे सवाल अगर मैं मेरी समस्या का समाधान कर सकते बिना binding विशेषता है (यानी एक 100% शुद्ध एक्सएचटीएमएल समाधान) का उपयोग पता करने के लिए है?

+0

तकनीकी जानकारी: जावा 1.6, JSF 1.2 + Facelets, Richfaces 3.3 – romaintaz

+0

मैं अगर यह किसी भी बेहतर काम करेगा, लेकिन कोशिश नहीं जानते? – Naganalf

+0

@Naganalf ने बिना किसी सफलता के प्रयास किया :( – romaintaz

उत्तर

0

हां, यह संभव है, लेकिन मुश्किल है। यहां मेरे कुछ नोट्स दिए गए हैं:

सी का उपयोग करें: टैबलेट के अंदर टैब टैग बनाने के लिए प्रत्येक आउटपुट पैनल के अंदर। टैब को हटाने पर rerender outputPanel, जोड़ या नाम बदलने

http://relation.to/11633.lace

http://devharbor.blogspot.com/2009/08/add-jsf-controls-dynamically-with.html


हम भी templating का इस्तेमाल किया है, हालांकि मैं अभी भी इसके लिए एक उत्कृष्ट मुद्दा है: How to force the build phase in a JSF 1.2 page using JSTL?

http://facelets.java.net/nonav/docs/dev/docbook.html#template टेम्पलेटिंग पर डॉक्स

http://www.jsfcentral.com/articles/facelets_3.html Templating ट्यूटोरियल

2
<a4j:outputPanel id="out"> 
    <rich:tabPanel> 
     <c:forEach items="list" var="var"> 
      <rich:tab label="#{var.name}" switchType="client"> 
       content 
      </rich:tab> 
     </c:forEach> 
    </rich:tabPanel> 
</a4j:outputPanel> 

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

  • कोई संबंधित समस्या नहीं^_^