Problema usando a4j:commandButton e h:selectBooleanC

2 respostas
G
Pessoal, estou com um problema que não sei mais o que fazer. Na minha página, eu tenho um
<a4j:commandButton action="#{consultaAtividades.atualizaListaAtividades}" value="Filtrar" reRender="listaAtiv" id="filtrar"/>
que chama um metodo para uma lista e os filtros são o seguinte
<t:selectBooleanCheckbox id="filtroTeste"
								value="#{consultaAtividades.filtroTeste eq 'S'}" />
					<t:outputLabel value="teste" id="labelFiltroTeste" for="filtroTeste"/>	
					
					<t:selectBooleanCheckbox id="filtroHomologacao"
								value="#{consultaAtividades.filtroHomologacao eq 'S'}"  />
					<t:outputLabel value="homologação" id="labelFiltroHomologacao" for="filtroHomologacao"/>	
					
					<t:selectBooleanCheckbox id="filtroProducao"
								value="#{consultaAtividades.filtroProducao eq 'S'}"  />
					<t:outputLabel value="produção" id="labelFiltroProducao" for="filtroProducao"/>
, ou melhor deveriam se funcionassem com o commandButton, pois ele não chama o método que deveria chamar. E quando eu tiro os checkbox, chama direitinho o método com os valores certos. Detalhe também é que se eu uso um
<t:selectOneMenu id="codigoProjeto"
						value="#{consultaAtividades.filtroCodigoProjeto}">
						<f:selectItems value="#{consultaAtividades.listaProjetos}" />
						<a4j:support event="onchange" reRender="listaAtiv"
							ajaxSingle="true" action="#{consultaAtividades.atualizaListaAtividades}" ignoreDupResponses="true"/>
							 
					</t:selectOneMenu>
também chama o método com todos os parametros. Então só pode ser uma incompatibilidade do commandButton com os checkboxs. Se eu colocar o parametro bypassUpdates="true" no command button, ele chama o método mas nao passa os parametros. Alguem sabe o que pode ser isso?

obs.: estou usando escopo de request no managedbean, e ja passei pra session e nao adianta nada.

2 Respostas

G
pessoal, fiz uma pagina de teste, sem nada de mais complexo, sem ajax4jsf, e tb nao funciona. Quando eu tiro o checkbox funciona, ou seja, vai pro metodo correto. Segue a pagina abaixo:
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h"%>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f"%>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t"%>
<html>
<head>
<title>Teste</title>
</head>
<body>
<f:view>
	<h:form>
		<t:selectBooleanCheckbox id="filtroTeste"
			value="#{teste.filtroTeste eq 'S'}" />
		<t:outputLabel value="teste" id="labelFiltroTeste" for="filtroTeste" />
		<h:commandButton id="filty" value="Filtrar sem Ajax jsf"
			action="#{teste.teste}" />
		<t:commandButton id="testetete" value="Filtrar sem Ajax tomahawk"
			action="#{teste.teste}" />
	</h:form>
</f:view>
</body>
</html>

Deve ser alguma coisa q estou colocando de mais ou de menos.

G

descobri pessoal, no value do <t:selectBooleanCheckbox id="filtroTeste" value="#{teste.filtroTeste eq 'S'}" /> não usem uma expressão lógica, e sim uma propriedade do tipo boolean, que ele se encarreaga de todo o trabalho e não dá esse bug que mandei. Ficaria assim <h:selectBooleanCheckbox id="filtroTeste" value="#{teste.filtroTeste}" />

Criado 23 de agosto de 2007
Ultima resposta 23 de ago. de 2007
Respostas 2
Participantes 1