TransWikia.com

Primefaces Componente Tabview Desaparece

Stack Overflow em Português Asked by AndsMe on February 19, 2021

Olá, estou testando o componente do TabView com campos obrigatórios inclusos em cada tab. Utilizo ajax com update="@form" para atualizar o componente, porém, quando eu clico em outra aba, a barra do TabView simplesmente desaparece, após isso, eu clico no botão de ‘Continuar’, aí ele reaparece.

Já tentei mudar o update do ajax para update=":form:opL :form:tv :form:botoes", só que ele ficava com o comportamento de ainda validar os campos da aba que estava anteriormente acessada junto com a aba atual, assim, tendo que clicar mais de uma vez para validar somente da aba atual.

Caso alguém tenha passado por algo do tipo e possa me orientar, agradeço desde já. Segue os códigos.

Xhtml:

<h:form id="form">
<p:panel id="painel" header="Pessoas - Cadastro com TABVIEW">
    <p:outputLabel value="#{pessoasTabViewBean.activeIndex}" id="opL"/>     
        <p:tabView id="tv" widgetVar="tv" activeIndex="#{pessoasTabViewBean.activeIndex}"  dynamic="true" cache="false">            
        <p:ajax event="tabChange" listener="#{pessoasTabViewBean.controlarAbaSelecionada}"  update=":form:opL :form:tv :form:botoes"/>
            <p:tab title="Aba I" id="tab0">
                <ui:include src="/pages/abas/_aba_docPessoa.xhtml" />
            </p:tab>
            <p:tab title="Aba II" id="tab1">
                <ui:include src="/pages/abas/_aba_enderPessoa.xhtml" />
            </p:tab>
            <p:tab title="Aba III" id="tab2">
                <ui:include src="/pages/abas/_aba_contatoPessoa.xhtml" />
            </p:tab>
        </p:tabView>
        <h:panelGrid columns="2" id="botoes">
            <p:commandButton value="Voltar" process="@this" update=":form :mensagem" actionListener="#{pessoasTabViewBean.voltar}" />
            <p:commandButton value="Continuar" update="@form" process="@form" actionListener="#{pessoasTabViewBean.continuar}" />               
        </h:panelGrid>                      
    </p:panel>
</h:form>

ManagedBean:

@SuppressWarnings("serial")
@ViewScoped
@ManagedBean 
public class PessoasTabViewBean implements Serializable{

private Pessoa pessoa;  
private Integer activeIndex;    
private TabView tabView;        
@PostConstruct
public void novo() {

    try {
        pessoa = new Pessoa();
        
    } catch (RuntimeException erro) {
        Messages.addGlobalError("Ocorreu um erro ao tentar gerar um nova pessoa.");
    }
}   

public String voltar(){
    
    String redirectPage = ""; 
    
    if (this.activeIndex == 0 || this.activeIndex == null) {
        redirectPage = "/pages/principal.jsf?faces-redirect=true"; 
    } else {
        this.setActiveIndex(--this.activeIndex);
    }
    return redirectPage;
}   

public String continuar() throws Exception{

    try {           
        
    } catch (Exception e) {
        
        throw new Exception(e.getMessage());
    } finally {
        this.setActiveIndex(++this.activeIndex);
    }       
    return StringUtils.EMPTY;       
}

public void controlarAbaSelecionada(TabChangeEvent event) {
    TabView tv = (TabView) event.getComponent();
    this.activeIndex = tv.getChildren().indexOf(event.getTab());
}   

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP