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());
}
…
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP