p:Dialog p:tabView Reset

2 respostas Resolvido
primefaces
jeroqueiroz

Tenho um p:dialog onde dentro dele consta um p:tabView, o botão que aciona o Dialog possui um Action o qual chama um método para inicializar os dados da tela, porém ao abrir o Dialog, percorrer nas abas e acessar novamente o mesmo não retorna para a primeira aba, fica sempre selecionada com a ultima aba visitada.

Estou usando o:
< p:dialog header="Produto e Serviço" widgetVar="produtoServDialog" id="produtoServ-dialog" resizable="true" modal="true" closeOnEscape="true" height="90%" width="90%">

< p:tabView id="tabViewProdutos" dynamic="true" scrollable="true" prependId="false" cache="false" activeIndex="0">

2 Respostas

jeroqueiroz
Solucao aceita

Encontrei esta que pode ser uma solução, porém me gerou outro problema:

public void abrirDialog() {
UIViewRoot viewRoot = FacesContext.getCurrentInstance().getViewRoot();
UIComponent componente = viewRoot.findComponent("idTabView");
TabView tabView = (TabView) componente;
tabView.setActiveIndex(0); //Vai abrir a primeira aba
RequestContext.getCurrentInstance().update(componente.getClientId());
RequestContext.getCurrentInstance().execute("PF('widgetVarDialog').show();");
}

O viewRoot.findComponent(“idTabView”) não encontra o Componente e retorna NULL.

jeroqueiroz

Resolvido com mais este metodo:

public UIComponent findComponent(final String id) {

		FacesContext context = FacesContext.getCurrentInstance();
		UIViewRoot root = context.getViewRoot();
		final UIComponent[] found = new UIComponent[1];

		root.visitTree(new FullVisitContext(context), new VisitCallback() {
			@Override
			public VisitResult visit(VisitContext context, UIComponent component) {
				if (component.getId().equals(id)) {
					found[0] = component;
					return VisitResult.COMPLETE;
				}
				return VisitResult.ACCEPT;
			}
		});

		return found[0];

	}
Criado 8 de dezembro de 2016
Ultima resposta 8 de dez. de 2016
Respostas 2
Participantes 1