P:commandButton + ignorar validators hibernate

Pessoal,

Tenho o seguinte cenário. Uma datatable com duas colunas. Estou utilizando a tag abaixo para colocar um check box ao lado de cada linha. Desta forma tenha a opção de selecionar vários registros para exclusão.

<p:column id="selectTodos" styleClass="selectTodos" selectionMode="multiple"  />

O que ocorre é que ao selecionar um registro e clicar no botão de excluir, ao invés de o fluxo ir para o set que marca quais nodos estão selecionados e depois ir para o método que exclui, está realizando as validações do hibernate, ex : @NotEmpty. Ao se preencho o campo que acusa estar vazio ele faz o que deveria.

O que eu quero é pular essas validações nessa situação, pois quando eu vou excluir não me interessa se um campo estiver vazio.

Abaixo segue os códigos.

Componente Button customizado:

[code] <ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:h=“http://java.sun.com/jsf/html
xmlns:f=“http://java.sun.com/jsf/core
xmlns:p=“http://primefaces.org/ui”>

<p:commandButton id="#{id}" 
	actionListener="#{myActionController[myActionMethod]}" value="#{value}"
	styleClass="button"
	style="background: ##{customizacaoLayoutController.customiza.corComponenteAcao} !important;"
	update="#{update}" rendered="#{not empty rendered ? rendered : true}"
	icon="#{icon}" oncomplete="#{oncomplete}" process="#{process}" >
	
	<ui:insert/>
</p:commandButton>

</ui:composition> [/code]

Componente datatable customizado:

[code]<ui:composition xmlns=“http://www.w3.org/1999/xhtml
xmlns:ui=“http://java.sun.com/jsf/facelets
xmlns:h=“http://java.sun.com/jsf/html
xmlns:f=“http://java.sun.com/jsf/core
xmlns:p=“http://primefaces.org/ui
xmlns:m=“http://www.XXX.com.br/tags”>

<p:dataTable id="#{id}DataTable" var="item" value="#{value}" 
	            	emptyMessage="#{recursos.nenhum_registro_encontrado}" 
	            	widgetVar="itemsTable" 
	            	selection="#{selection}"
	            	paginator="true" rows="10"  
	            	currentPageReportTemplate="{currentPage} #{recursos.de} {totalPages}"
                 	paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"  
                 	paginatorPosition="bottom" rowKey="#{item.sequencial}">
	<p:column id="selectTodos" styleClass="selectTodos" selectionMode="multiple"  />

	<ui:insert />
	
	<f:facet name="footer">  
   		<div class="buttons">
			<m:button id="btnAdcionar" 
           		myActionController="#{myActionController}" styleClass="button"
	       		myActionMethod="#{myActionMethodIncluir}" process="@this"
	       		update=":formForm:tabView:#{id}DataTable" value="#{recursos.adicionar_item}">  
   			</m:button>

			<m:button id="btnExcluir" styleClass="button"
           		myActionController="#{myActionController}"
	       		myActionMethod="#{myActionMethodExcluir}" process="#{id}DataTable"
	       		update=":formForm:tabView:#{id}DataTable" value="#{recursos.excluir}">  

			</m:button>
        </div>
	</f:facet>
</p:dataTable>

</ui:composition>[/code]

No xhtml:

<p:tab id="empresaTiposAjustesTab" title="#{recursos.tipo_ajuste}" > 
				<div style="clear: both;">
					<m:editableDataTable id="tabelaTiposAjustes" value="#{controller.tiposAjustes}"
							selection="#{controller.tiposAjustesSelected}"
							myActionController="#{controller}"
			           		myActionMethodExcluir="excluirTipoAjuste"
							updateExcluir=":formForm:tabView:"
							updateAdicionar=":formForm:tabView:"
							myActionMethodIncluir="adicionarTipoAjuste" >
					
						<m:editableColumnTable titleColumn="#{recursos.codigo}" columnId="codigoColumn">
							<h:outputText fieldId="textCodigo" value="#{item.codigo}"  />
						</m:editableColumnTable>
						
						<m:editableColumnTable titleColumn="#{recursos.descricao}" columnId="descricaoColumn">
							<m:textfield fieldId="textDescricao" value="#{item.textoAjuste}" rendered="false"/>
						</m:editableColumnTable>
					</m:editableDataTable>
				</div>
				
			</p:tab>

E no @ManagedBean tem esses métodos que são relacionados aos códigos acima:


	public SelectListDataModel<EmpresaTipoAjuste> getTiposAjustes() {
		if (tiposAjustes == null)
			tiposAjustes = new SelectListDataModel<EmpresaTipoAjuste>();
		
		return tiposAjustes;
	}

	public void setTiposAjustes(SelectListDataModel<EmpresaTipoAjuste> tiposAjustes) {
		this.tiposAjustes = tiposAjustes;
	}

	public EmpresaTipoAjuste[] getTiposAjustesSelected() {
		return tiposAjustesSelected;
	}

	public void setTiposAjustesSelected(EmpresaTipoAjuste[] tiposAjustesSelected) {
		this.tiposAjustesSelected = tiposAjustesSelected;
	}
	public void adicionarTipoAjuste(ActionEvent e) {
		EmpresaTipoAjuste tipoAjuste = new EmpresaTipoAjuste();
		tipoAjuste.setCodigo(1);
		this.getTiposAjustes().add(tipoAjuste);
	}
	
	public void excluirTipoAjuste(ActionEvent e) {
		
		this.getTiposAjustes().remove(this.getTiposAjustesSelected());
	}

Se algum souber como posso resolver esse problema.

Obrigado.

Ninguém tem uma ideia do que fazer?

Coloque immediate=“true” nos campos que você não quer que sejam validados no ciclo de vida normal,
testa ae e posta se funcionou.

[quote=ribclauport]Coloque immediate=“true” nos campos que você não quer que sejam validados no ciclo de vida normal,
testa ae e posta se funcionou.[/quote]

Obrigado pela resposta ribclauport, mas já testei isso. Não funciona por que desta forma a propriedade controller.tiposAjustesSelected que é quem terá quais linhas foram selecionadas não é chamada. Vai direto para a action do botão excluir.