2016-02-09 33 views
2

我需要動態顯示標籤名稱。每個選項卡將有自己的數據列表。 例如如果選項卡名稱是「學生」,當用戶點擊「學生」標籤時,它將顯示學生列表。如果單擊「教師」選項卡,它將顯示一個教師列表。 我指的是使用下面的鏈接PrimeFaces的例子。 http://www.primefaces.org/showcase/ui/panel/tabView.xhtml如何使用PrimeFaces 5.0中的tabView獲取動態標籤名稱和數據?

我試過使用數據模型和Ajax事件的例子,但我無法顯示所需的數據。事件不適用於數據模型。

我曾嘗試以下方法,

<p:tabView value="#{myBean.tabList}" var="tabItem"> 
    <p:tab title="#{tabItem.tabTitle}"> 
     <h:outputText value="#{tabItem.valueA}"/> 

    </p:tab> 
</p:tabView> 

如果我用這個方法,數據是動態的,但不是我想要的方式。我的數據就像Tab Name是一個列表,每個Tab的數據是另一個列表。

TabView tabView = new TabView(); 
Tab newTab = new Tab();    
newTab.setTitle("Tab Title"); 

Tab newTab2 = new Tab();    
newTab2.setTitle("Tab Title2");  
tabView.getChildren().add(newTab2); 

任何人都可以幫忙嗎?

UPDATE

我現在能夠顯示所要求的從輔助bean創建PrimeFaces代碼動態數據。 TabView位於<p:dialog>框內。

out1 = new SelectBooleanCheckbox(); 
out1.setValue(obj.isTabViewCheckBox()); 
out2 = new HtmlOutputLabel(); 
out2.setValue(obj.getTaskName()); 

我正面臨新的問題..我無法獲得提交後的SelectBooleanCheckbox值。 XHTML代碼:

<p:dialog header="#{BB.projNo}" widgetVar="addData" modal="true" showEffect="explode" hideEffect="explode" styleClass="editProjects"> 
<h:panelGrid id="TaskAdd"> 
    <f:facet name="header"> 
     <h:outputText value="Tasks"/> 
    </f:facet> 
    <p:tabView id="tabView" binding="#{BB.tabView}"> 
    </p:tabView> 
</h:panelGrid> 
<p:commandButton id="saveBtn" action="#{BB.addTask}" value="Save" style="align:center;" styleClass="buttonStyle" onstart="showLoadImg();" oncomplete="hideLoadImg();PF('addData').hide();add();" > 
</p:commandButton> 
</p:dialog> 

如何獲得提交所選項目的價值?

回答

1

我想出了提交後獲取複選框值的方法。 由於我有2個列表,一個用於製表符名稱,另一個用於製表符數據,我不得不遍歷這兩個列表。我不得不引用從最初用於生成複選框組件的managedBean生成的每個子元素。

1

您可以使用JSTL forEach標記

<p:tabView id="myTabView"> 
    <c:forEach var="tab" items="#{myBean.tabs}"> 
        <p:tab title="#{tab.title}"> 
         <ui:include src="#{tab.url}" /> 
        </p:tab> 
       </c:forEach> 
</p:tabView> 

在你爲myBean 生成列表進行迭代

List<MyTabObject> tabs = new ArrayList<MyTabObject>(); 
tabs.add(new MyTabObject("Tab Title", "/path/to/contentFile.xhtml")); 

MyTabObject

public class MyTabObject { 
     private String title; 
     private String url; 

     public MyTabObject() { 

     } 

     public MyTabObject(String title, String url) { 
      this.title = title; 
      this.url = url; 
     } 
    } 
0

您可以阿爾斯o使用value屬性<p:tabView>動態生成製表符。

<p:tabView 
    id="mytabView" 
    value="#{bean.objectList}" 
    var="item"> 

    <p:tab title="#{item.name}"> 
    ...content... 
    </p:tab> 
</p:tabView> 
+0

如何綁定裏面的另一個列表? – razor

相關問題