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.