Olá,
Tenho um crud que possui mais de uma tab. Em uma das tabs tem um picklist, e quando troco para outra tab, os registros que foram selecionados nesse picklist precisam ser exibidos em um datatable. Até ai tudo bem, fiz tudo isso e funciona certo.
O problema é que quando eu troco de tab sem preencher os campos que estão no bean como required (@NotEmpy, @NotNull), está exibindo as mensagens referentes a esses campos.
Já tentei por na tag ajax process="@this", immediate=“true”, partialSubmit=“true” e nada resolve.
O código das tabs segue abaixo:
<ui:define name="tab_form_fields_part">
<p:ajax event="tabChange" process="@this" immediate="true" partialSubmit="true" listener="#{controller.onChangeTab}" update="empresasSelecionadas :formForm:tabView:pojoperfilPanelPickList"/>
<p:tab id="usuarioTab" title="#{recursos.geral}" >
aqui tem campos para preenchimento
</p:tab>
<p:tab id="empresasUsuarioTab" title="#{recursos.empresas_usuario}" rendered="#{controller.canAlterarPerfilEmpresa}" >
<m:picklist id="empresaPanel" text="#{recursos.empresa}" value="#{controller.empresas}"
label="nomeFantasia"/>
</p:tab>
<p:tab id="perfisUsuarioTab" title="#{recursos.perfil_acesso}"
rendered="#{controller.canAlterarPerfilEmpresa}" >
<p:dataTable id="empresasSelecionadas" var="prop"
value="#{controller.empresasSeleciondasList}"
rowKey="#{prop.id}" selectionMode="single"
selection="#{controller.empresaSelected}">
<p:ajax event="rowSelect" listener="#{controller.onChangeRow}" update=":formForm:tabView:pojoperfilPanelPickList"/>
<p:column id="empresaColumn" headerText="#{recursos.empresa}">
<h:outputText id="textEmpresaColumn" value="#{prop.nomeFantasia}" />
</p:column>
</p:dataTable>
<m:picklist id="perfilPanel" text="#{recursos.perfil}" value="#{controller.perfis}" label="nomePerfil" />
<div class="buttons">
<m:button id="btnConfirmar"
actionController="#{controller}"
actionMethod="confirmarPerfis"
update=":formForm:tabView:empresasSelecionadas :formForm:tabView:pojoperfilPanelPickList" value="#{recursos.confirmar}">
</m:button>
</div>
</p:tab>
</ui:define>
E o método que é chamado no controller:
public void onChangeTab() {
this.empresasSeleciondasList = new SelectListDataModel<Empresa>(empresas.getTarget());
removeEmpresas();
if (!empresasSeleciondasList.isEmpty()) {
this.setEmpresaSelected(empresasSeleciondasList.get(0));
onChangeRow();
}
}
Alguém já passou por isso, ou sabe como contornar este problema?
