commandButton não chama action

Tenho um form com o escopo de sessão:

<managed-bean>
	<description>formCidade</description>
	<managed-bean-name>formCidade</managed-bean-name>
	<managed-bean-class>com.xxx.form.FormCidade</managed-bean-class>
	<managed-bean-scope>session</managed-bean-scope>
</managed-bean>

e uma datable no jsp que mostra os resultados de uma consulta, e para cada registro, um botão editar (que seta no formCidade a cidade a ser editada)

<t:dataTable id="cidades" styleClass="gridBusca" value="#{formCidade.cidades}" var="cidade"
	columnClasses="descricao,sigla,estado,editar" width="550">
	<t:column>
		<f:facet name="header">
			<h:outputText value="Cidade" />
		</f:facet>
		<h:outputText value="#{cidade.descricao}" />
	</t:column>
	<t:column styleClass="semBorda">
		<f:facet name="header">
			<h:outputText value="Ações" />
		</f:facet>
		<t:commandButton styleClass="submit" type="submit" action="#{formCidade.editar}"
			value="Editar" title="Editar" />			
	</t:column>
</t:dataTable>

tudo funcionando 100%… aí precisei mudar o escopo do form para request…
fiz algumas modificações (gravar alguns dados na sessão) e (quase) tudo funcionou bem…
depois de trocar para request, este commandButton ‘Editar’ não chama mais o método editar do formCidade
ao clicar no botão é chamado apenas o construtor do formCidade mas o método editar não é chamado em seguida.

Notas:

1 - estou utilizando:
myfaces-api-1.1.4.jar
myfaces-impl-1.1.4.jar
tomahawk-1.1.3.jar

2 - eu já tentei trocar os componentes do tomahawk (t) pelos outros (h)
mas não adiantou

3 - tentei com commandLink… tb não funcionou

4 - o método editar é público, retorna String, e não leva parâmetros

5 - os outros botões, como o de consulta, que estão fora da datable funcionam normalmente…

6 - Tentei com immediate=“true” tb nao deu… =/

até onde eu sei… se eu tiver uma datable com value="#{formCidade.cidades}" var=“cidade”, e colocar um commandButton para cara registro, ao clicar em um botão (de um determinado registro) o jsf automaticamente coloca a entidade daquela linha como um atributo na request, com o nome da propriedade var (no caso “cidade”)

será que ele esta tentando fazer isso, e (por algum motivo) não esta conseguindo ? :roll:

gracias

acabei de resolver o problema…
como eu mudei o escopo do form de session para request, o seguinte acontece:
eu informo os dados da busca, e dou um submit no form
é executada a action “busca” do form, e os dados são retornados e apresentados
essa instância do form então é descartada (acabou o seu ciclo de vida)…
ao clicar no botão editar, o form que possuia a lista de cidades já não existe mais
depois do construtor do FormCidade ser invocado, o método getCidades era chamado para buscar a cidade a ser passada por parâmetro na request, para depois chamar o método editar… mas o getCidades retornava null…

o problema é que não acontecia exception, não aparece nada com um h:messages… eu cheguei a colocar o log4j e coloquei o nivel de detalhes DEBUG… não aparecia nada…

então eu achei num fórum (não lembro aonde) um cara com o mesmo problema… e um outro disse para usar preserveDataModel=“true” na datatable… e funcionou
mas ainda não li mto sobre o que realmente muda com esse preserveDataModel

valews