2012-12-21 5 views
1

프라임 얼굴을 사용하여 페이지를 다시로드하지 않고도 동적 탭 (관련없는 탭)을 추가 할 수 있습니까?프라임은 탭을 동적으로 추가합니다.

나는이

http://blog.favrik.com/examples/tabs/

우리가하는 메뉴 바처럼 어떤 일을 원하고 메뉴를 클릭했을 때, 동적 탭이 생성 될 수 있습니다. 탭에서 페이지를로드해야합니다 (xhtml). 전체 페이지를 다시로드하고 관리 빈에 의존하지 않고 탭을 추가해야합니다. 대부분 요청 범위를 사용하여 최대 상태가 유지되도록하려합니다.

예를 보았습니다. 빈 데이터를 기반으로 탭을 추가하는 것을 보여줍니다. 하지만 내 경우에는 각 탭이 독립적입니다 (페이지)

현재 수행중인 응용 프로그램에서 샘플 이미지를 추가했습니다 (JSF로 마이그레이션하려는 중입니다). 각 탭은 독립적 인 screen/xhtml 파일과 같습니다. 서버에 뷰 상태가 저장되지 않았습니다. 메뉴 항목을 클릭하면 새 탭에 새 화면 내용이 추가됩니다. 페이지를 다시로드의 탭 (우리는 국적을 상실하려고하는 우리가 함께 살 수있는) 손실됩니다

Sample Image

+0

탭 뒤에있는 모델에 레코드를 추가하는 양식을 채우는 경우 tabView를 다시 렌더링하십시오. Primefaces 쇼케이스 http://www.primefaces.org/showcase/ui/tabviewModel.jsf에서 Tabview 모델을 보았습니까? – 8bitjunkie

+1

@ 7SpecialGems, OP가 Bean 기반 모델에서 TabView를 기반으로한다고 생각하지 않습니다. – kolossus

+0

전에 아주 simliar 질문에 대한 답변을 게시했습니다. 이게 니가 찾고있는거야? http://stackoverflow.com/questions/11961692/how-to-add-button-for-adding-new-tabs-near-last-tab/11962703#11962703 – BalusC

답변

2

당신은 무엇 당신에 관한 자세한 내용과 더 많은 질문을 구체화해야 할 수도 있습니다 탭에 넣을거야. 그러나이 시도 : 클라이언트 측 TabView 바인딩

  1. 를 백업 빈의 인스턴스. XHMTL 측면에서 :

    <p:tabView id="myTabPanel" binding="#{myBackingBean.tabView}" /> 
    

    백킹 빈에서

    TabView tabView = new TabView(); 
    //getter and setter 
    
  2. TabPanel

    TabView tabView = new TabView(); 
    Tab newTab = new Tab();    //Create new Tab 
    newTab.setTitle("Tab Title");  //Set a basic property 
    tabView.getChildren().add(newTab); //Add as a child of the TabView 
    
  3. 사용의 자식으로 Tab을 추가하는 방법으로 아래의 스 니펫을 구현 프라임 액센트 RequestContext to ajax 새 탭을 반영하도록 뷰를 업데이트

    SpecialGems 지적처럼
    RequestContext context = RequestContext.getCurrentInstance(); 
        context.update("myTabPanel"); 
    

또는, 당신은 단순히 그냥 백업 콩 목록에 TabView을 결합 할 수 단순히에 위의 3에 표시된대로 RequestContext와 TabView를 업데이트, 그 목록에 새 항목을 추가 변경 사항 반영

+0

안녕하세요, 작동하지만 상태가 좋을 것이며보기 또는 대화 범위를 사용해야합니다. 하지만 그것은 상태가 필요하지 않습니다/요청 범위, 내가 뭘하려고 오전에 설명하는 덧글을 참조하십시오 – Mukun

+0

그 경우에, 내가 달성되고 볼 수있는 유일한 방법은 탭 데이터입니다 (테이블 뷰가 요청 범위 인 경우 뷰 범위 백업 빈이 모든 탭 데이터를 읽는 것처럼 페이지를 새로 고침하여 명백하게 발생합니다. 데이터를 목록에 저장하고 tabView에 제공). 새 탭 데이터를 만드는 경우 어딘가에 있어야합니다. 세션에서 (@ViewScoped를 사용하는 경우조차도) 데이터를 조합하는 것이 만족스럽지 않다면 레이어로 푸시합니다. – 8bitjunkie

+1

@ 7SpecialGems, 당신이 언급했듯이, 나는 우리가 그 층으로 가야만한다고 생각합니다. 나는보기 정보가 어디서든 유지되기를 원하지 않는다. Flex 애플리케이션을 JSF로 마이그레이션 할 때 POC를 수행하고 있습니다. flex에서는 SuperTabNavigator 구성 요소가 있고 각 탭에 다른 screen/Flex 모듈을로드합니다. 나는 JSF에서 같은 것을 모방하려고 노력하고있다. flex의 경우 서버는 클라이언트 탭이나 뷰에 대해 전혀 모릅니다. 희망은 내가 달성하려고하는 일에 분명히했다. – Mukun

관련 문제