Carregar conteudo dinamico na TabPanel - JSF

0 respostas
Cherubini

Pessoal,

Estou com a seguinte dificuldade, tenho uma tabpanel que é criada dinamicamente, porem eu não estou conseguindo carregar o conteudo dela dinamicamente.

EX: Ao clicar no meno ele cria uma aba a mais na tabPanel e deveria carregar no seu conteudo um arquivo xhtml, porem não está aparecendo nada.

Alguem tem alguma dica?

Segue codigo:

public HtmlPanelGrid getPanelGrid() {		
		
		// Cria Panel Grid
		panelGrid = new HtmlPanelGrid();
		panelGrid.setStyle("width:100%;height:100%");

		// Criação da Tab Home
		HtmlTab tabHome;
		tabHome = new HtmlTab();
		tabHome.setLabel("Home");
		tabHome.setName("Home");
		tabHome.setId("IdHome");		

		// Criação do Tab Panel
		tabPanel = new HtmlTabPanel();
		tabPanel.setSwitchType("ajax");
		tabPanel.setId(DYN_TAB_PANEL);
		tabPanel.getChildren().clear();		

		// Adiciona Tab Home
		tabPanel.getChildren().clear();
		tabPanel.getChildren().add(tabHome);

		// Adiciona o Tab Panel
		panelGrid.getChildren().clear();
		panelGrid.getChildren().add(tabPanel);

		// Limpa HashMap das Tabs
		mapaTabs.clear();

		return panelGrid;
	}

public void addTab(ActionEvent event) {		
		
		HtmlAjaxOutputPanel outPut = new HtmlAjaxOutputPanel();
		outPut.setAjaxRendered(true);		
		Include include = new Include();
		
		// Recebe Id da Tab que será adicionada
		String tabId = FacesContext.getCurrentInstance().getExternalContext()
				.getRequestParameterMap().get("tabToAdd");

		// Verifica se a Tab já foi adicionada ao panel
		HtmlTab tabAdd = mapaTabs.get(tabId);

		// Se tab não foi criada
		if (tabAdd == null) {

			// Busca o ItemMenu com o respectivo "tabId"
			MenuControle menuCtrl = new MenuControle();
			MenuItemVO itemMenu = menuCtrl.getItemMenu(tabId);

			// Cria nova Tab
			HtmlTab htmlTab = new HtmlTab();
			htmlTab.setName(itemMenu.getMenuName()); // Nome da Tab
			htmlTab.setId("Id" + itemMenu.getMenuId()); // Id da Tab
			
			include.setId("teste");		
			include.setViewId("/views/security.xhtml");

			// Cria Panel Group, para adicionar o Label da Tab e o Icone de
			// fechar
			HtmlPanelGroup panelGroup = new HtmlPanelGroup();

			panelGroup.setId("PanelGrp" + itemMenu.getMenuId());

			// Label da Tab
			HtmlOutputText label = new HtmlOutputText();
			label.setValue(itemMenu.getMenuName());

			// Imagem de Fechar Tab
			HtmlGraphicImage pic = new HtmlGraphicImage();
			pic.setValue("/images/icons/Cancel.gif");
			pic.setOnclick("deleteTab('" + itemMenu.getMenuId()
					+ "');Event.stop(event);");
			pic.setStyleClass("hidelink");
			pic.setStyle("margin-left:4;height:10px;weight:10px;");

			// Adiciona Label e Imagem ao Panel Group
			panelGroup.getChildren().add(label);
			panelGroup.getChildren().add(pic);

			// Adiciona Panel Group no Facet da Tab
			htmlTab.getFacets().put("label", panelGroup);
			
			setUrl(itemMenu.getMenuLink());

			// Adiciona Tab no TabPanel
			outPut.getChildren().add(include);
			htmlTab.getChildren().add(outPut);
			tabPanel.getChildren().add(htmlTab);

			// Define Tab ativa
			tabPanel.setSelectedTab(htmlTab.getName());

			// Atualiza o PanelGrid
			panelGrid.getChildren().clear();
			panelGrid.getChildren().add(tabPanel);

			// Adiciona a Tab no HashMap
			mapaTabs.put(tabId, htmlTab);

		} else {			
			// Define Tab ativa
			tabPanel.setSelectedTab(tabAdd.getName());

			// Atualiza o PanelGrid
			panelGrid.getChildren().clear();
			panelGrid.getChildren().add(tabPanel);
		}
	}

Segue view:

<h:panelGrid id="tabs" binding="#{tabControle.panelGrid}" />

Fico no aguardo e obrigado.

Criado 28 de setembro de 2011
Respostas 0
Participantes 1