2013-01-14 2 views

답변

0

구현은 3 개 사용자 정의 클래스가 (내가 postin에게 Q & 간단한 구현의 생각 때문에 사람들이 주위에 물어 본 적이) :

  1. 내용 :로 값을 포함 탭에 표시;
  2. ItemTab : UITab 개체 및 콘텐츠 개체 contit;
  3. MyTabs : 탭에 대한 액세스를 제공하고 추가/제거 메소드를 제공하는 EJB 관리 빈.

코드는 다음과 같습니다

내용 :

public class Content { 

    String name; 
    String job; 
    String dept; 

    public Content() { 
     name = "John Doe"; 
     job = "None"; 
     dept = "None"; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public String getJob() { 
     return job; 
    } 

    public void setJob(String job) { 
     this.job = job; 
    } 

    public String getDept() { 
     return dept; 
    } 

    public void setDept(String dept) { 
     this.dept = dept; 
    } 
} 

TabItem의 :

public class TabItem { 

    UITab component; 
    Content content; 

    public TabItem() { 
     component = new UITab(); 
     content = new Content(); 
    } 

    public UITab getComponent() { 
     return component; 
    } 

    public void setComponent(UITab tab) { 
     this.component = tab; 
    } 

    public Content getContent() { 
     return content; 
    } 

    public void setContent(Content content) { 
     this.content = content; 
    } 
} 

MyTabs :

import java.io.Serializable; 
import java.util.ArrayList; 
import java.util.List; 
import javax.annotation.PostConstruct; 
import javax.enterprise.context.SessionScoped; 
import javax.inject.Named; 

@Named 
@SessionScoped 
public class MyTabs implements Serializable { 

    private List<TabItem> tabs; 

    public MyTabs() { 
     tabs = new ArrayList<TabItem>(); 
    } 

    @PostConstruct 
    private void init() { 
     createTab(); 
     createTab(); 
     createTab(); 
    } 

    public void createTab() { 
     TabItem tab = new TabItem(); 

     tab.getComponent().setId("Tab" + (tabs.size()+1)); 
     tab.getComponent().setHeader("Tab " + (tabs.size()+1)); 
     tab.getContent().setName("John Doe " + (tabs.size()+1)); 
     tab.getContent().setJob("Salesman " + (tabs.size()+1)); 
     tab.getContent().setDept("Sales " + (tabs.size()+1)); 

     tabs.add(tab); 
    } 

    public void removeTab(TabItem tab) { 
     tabs.remove(tab); 
    } 

    public List<TabItem> getTabs() { 
     return tabs; 
    } 

    public void setTabs(List<TabItem> tabs) { 
     this.tabs = tabs; 
    } 
} 

tabview.xhtml :

<h:commandLink value="Add Tab" 
        actionListener="#{myTabs.createTab()}"/> 
<rich:tabPanel switchType="client"> 
    <c:forEach items="#{myTabs.tabs}" var="tab"> 
     <rich:tab value="#{tab.component}"> 
      <f:facet name="header"> 
       <h:outputLabel value="#{tab.component.header}"/> 
       <h:commandLink value=" X" actionListener="#{myTabs.removeTab(tab)}"/> 
      </f:facet> 

      <h:panelGrid columns="2"> 
       <h:outputLabel value="Name: "/> 
       <h:outputLabel value="#{tab.content.name}"/> 
       <h:outputLabel value="Dept: "/> 
       <h:outputLabel value="#{tab.content.dept}"/> 
       <h:outputLabel value="Job: "/> 
       <h:outputLabel value="#{tab.content.job}"/> 
      </h:panelGrid> 
     </rich:tab> 
    </c:forEach>    
</rich:tabPanel>