SelectBooleanCheckbox não funciona (Primeface, Jsf)

Boa tarde, estou tendo um problema com meu projeto, minha pagina xhtml está assim:

	<h:form id="frm">
	    <h:panelGrid columns="3" cellspacing="15">
		<h:outputText value="Inativos: " />
    		<p:selectBooleanCheckbox value="#{MBBovino.inativo}">
        		<p:ajax update=":frmBovListagem:tblBovinos" listener="#{MBBovino.mostrarInativo}" />
    		</p:selectBooleanCheckbox>
		</h:panelGrid>
	</h:form>

		<h:form id="frmBovListagem" >
		<p:dataTable id="tblBovinos" widgetVar="tabelaBovinos" emptyMessage="Nenhum Bovino encontrado" value="#{MBBovino.itens}" var="item" filteredValue="#{MBBovino.itensFiltrados}" paginator="true" rows="8">
    		<f:facet name="header">
        		Bovinos
    		</f:facet>
			<p:column headerText="Código" filterBy="#{item.codigo}" >
				<h:outputText value="#{item.codigo}">
					<f:convertNumber pattern="000000" />
				</h:outputText>
			</p:column>
			<p:column headerText="Nome" filterBy="#{item.nome}" >
				<h:outputText value="#{item.nome}"/>
			</p:column>
			<p:column headerText="Data de Nascimento">
				<h:outputText value="#{item.datanascimento}">
					<f:convertDateTime pattern="dd/MM/yyyy" />
				</h:outputText>
			</p:column>
			<p:column headerText="Raça" filterBy="#{item.raca}" >
				<h:outputText value="#{item.raca}"/>
			</p:column>
			<p:column headerText="Origem" filterBy="#{item.origem}">
				<h:outputText value="#{item.origem}"/>
			</p:column>			
			<p:column headerText="Opções">
				<p:commandButton  rendered="#{item.situacao == 1}" icon="ui-icon-trash"  oncomplete="PF('dlgBovExcluir').show();" update=":frmBovExcluir:pnlBovExcluir" title="Excluir">
					<f:setPropertyActionListener value="#{item}" target="#{MBBovino.bovino}"/>
				</p:commandButton>
				<p:button icon="ui-icon-search" rendered="#{item.situacao == 1}" outcome="/pages/individualInformacoes.xhtml" title="Editar">
					<f:param name="bovCodigo" value="#{item.codigo}"/>	
				</p:button>
				<p:commandButton  rendered="#{item.situacao == 0}" value="Ativar"  oncomplete="PF('dlgBovAtivar').show();" update=":frmBovAtivar:pnlBovAtivar" title="Ativar">
					<f:setPropertyActionListener value="#{item}" target="#{MBBovino.bovino}"/>
				</p:commandButton>
				<p:commandButton  rendered="#{item.situacao == 1}" value="Inativar"  oncomplete="PF('dlgBovInativar').show();" update=":frmBovInativar:pnlBovInativar" title="Ativar">
					<f:setPropertyActionListener value="#{item}" target="#{MBBovino.bovino}"/>
				</p:commandButton>
			</p:column>
			<f:facet name="footer">					
			</f:facet>
		</p:dataTable>
	</h:form>

	<p:dialog header="Inativar Bovino" closable="false" draggable="false" widgetVar="dlgBovInativar" modal="true" appendTo="@(body)"  resizable="false">
		<h:form id="frmBovInativar">
			<h:panelGrid  columns="1" >
				<h:outputText value="Você Deseja Realmente Inativar o Bovino: "/>
			</h:panelGrid>
			<h:panelGrid id="pnlBovInativar" columns="2" >
				<h:outputText value="Codigo: "/>
				<h:outputText value="#{MBBovino.bovino.codigo}"/>	
				<h:outputText value="Nome:"/>				
				<h:outputText value="#{MBBovino.bovino.nome}"/>
				<h:outputText value="Destino:"/>				
				<p:inputText value="#{MBBovino.bovino.destino}"/>
			</h:panelGrid>
			<h:panelGrid  columns="2" >
				<p:commandButton value="Inativar"  actionListener="#{MBBovino.inativar()}" oncomplete="PF('dlgBovInativar').hide(); PF('tabelaBovinos').clearFilters(); " update="frmBovListagem:tblBovinos :msgGlobal"/>
				<p:commandButton value="Cancelar" onclick="PF('dlgBovInativar').hide();"/>
			</h:panelGrid>
		</h:form>
	</p:dialog>	

.Tenho uma tabela de bovinos, no banco eles podem ser inativos ou ativos, então ao clicar no checkBox ele lista os bovinos inativos, ai se eu clicar novamente desmarcando, ele só mostra os ativos, isso funciona. Porem quando eu clico no botão de inativar ali da coluna da tabela, e desativo o bovino, meu checkbox não consegue mais filtrar e listar, é como se ele parece de funcionar, mas não retorna nenhum erro.

Meu bean está assim:

Metodo do checkBox:

  public void mostrarInativo() throws SQLException {
    	BovinoDAO dao = new BovinoDAO();
	
    if(inativo){
    	itens = dao.listarInativos();
    }else{
    	itens = dao.listar();
    }
    
}

Método de ativar o bovino

public void ativar(){

	try {
		BovinoDAO dao = new BovinoDAO();
		dao.ativar(bovino);
		itens = dao.listar();
		JSFUtil.adicionarMensagemSucesso("Bovino ativado com sucesso");
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		JSFUtil.adicionarMensagemErro(e.getMessage());
	}
	

}

Método de Inativar o bovino

public void inativar(){

	try {
		BovinoDAO dao = new BovinoDAO();
		dao.inativar(bovino);
		itens = dao.listar();
		JSFUtil.adicionarMensagemSucesso("Bovino inativado com Sucesso");
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
		JSFUtil.adicionarMensagemErro(e.getMessage());
	}
	

}	

Se alguém puder me dar uma ajuda, parece que o check perde o foco, ou algo assim, porque ele simplesmente para de funcionar

Chegou a debugar e ver se o filtro é processado?
O ciclo de vida do jsf é meio chatinho, pode ser que ao tentar recuperar os valores da view ele esteja com alguma falha, ocasionando a quebra no funcionamento.

1 curtida

Deu certo tirando o comando para limpar o filtro, ai ficou assim:

<p:commandButton value="Inativar" actionListener="#{MBBovino.inativar()}" oncomplete="PF('dlgBovInativar').hide();" update="frmBovListagem:tblBovinos :msgGlobal"/>

mas o problema agora é que ai se eu filtrar e clicar no botão a tabela buga, pois agora ele nao da mais um clear no filtro, conhece outra forma de dar clear?

Esse clear que você se refere seria o mesmo que limpar a variável que popula a tabela?

acho que não, era esse aqui: PF(‘tabelaBovinos’).clearFilters();, ele limpava os filtros da tabela, pois eu tinha aquela tabela com filtros já

ai parece que sempre que filtra e clica em um botão pra fazer uma ação o primeface se perde, ai precisa dar um clear no filtro, só que era isso que tava bugando meu check, ai não tem como por ele