[RESOLVIDO] Dúvida em como usar AJAX com JBoss Seam

Pessoal,

tô papando mosca em algum detalhe e por isso tô pendindo ajuda.
Estou usando o Seam 2.2.0GA e JBoss AS 5.1GA.
Não estou conseguindo fazer um exemplo simples de uso do Ajax.
Em uma página, eu tenho um dataTable que lista um conjunto de entidades. Cada entidade possui um checkbox que indica se o objeto vai ser selecionado para processamento. Ao se clicar no objeto, uma chamada ajax é feita adicionando o mesmo a um list, que será utilizado posteriormente para processamento. O problema é que não consigo acessar o método através do componente a4j:support

Eis os códigos

<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
    xmlns:s="http://jboss.com/products/seam/taglib"
    xmlns:ui="http://java.sun.com/jsf/facelets"
    xmlns:f="http://java.sun.com/jsf/core"
    xmlns:h="http://java.sun.com/jsf/html"
    xmlns:rich="http://richfaces.org/rich"
    xmlns:a4j="http://richfaces.org/a4j"
    template="layout/template.xhtml">

<ui:define name="body">
	<a4j:form>
    <rich:panel>
        <f:facet name="header">Lista Embalagens</f:facet>

        <div class="results">

            <h:outputText value="No produto exists"
                       rendered="#{empty embalagemForm.embalagensDisponiveis}"/>

            <h:dataTable id="embalagemList" var="_embalagem"
                      value="#{embalagemForm.embalagensDisponiveis}"
                   rendered="#{not empty embalagemForm.embalagensDisponiveis}">
                <h:column>
                    <f:facet name="header">#{messages['embalagem.id']}</f:facet>
                    #{_embalagem.id}
                </h:column>
                <h:column>
                    <f:facet name="header">#{messages['embalagem.descricao']}</f:facet>
					#{_embalagem.descricao}                    
                </h:column>
                <h:column>
                	<h:selectBooleanCheckbox value="#{_embalagem.selecionado}">
                		<a4j:support action="#{embalagemForm.adicionaEmbalagem(_embalagem)}" event="onclick" ajaxSingle="true">
                		</a4j:support>
                	</h:selectBooleanCheckbox>
                </h:column>
            </h:dataTable>

        </div>

    </rich:panel>

    <div class="actionButtons">
        <h:commandButton value="Enviar" action="#{embalagemController.enviaEmbalagens}"/>
    </div>
	</a4j:form>
</ui:define>
</ui:composition>
package com.sbsi.session.embalagem;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.event.ActionEvent;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;

import com.sbsi.entity.embalagem.Embalagem;

@Name("embalagemForm")
@Scope(ScopeType.CONVERSATION)
public class EmbalagemForm implements Serializable {
	private List<Embalagem> embalagensDisponiveis;
	private List<Embalagem> embalagensSelecionadas;
	
	
	public EmbalagemForm() {
		embalagensSelecionadas = new ArrayList<Embalagem>();
	}
	
	public List<Embalagem> getEmbalagensDisponiveis() {
		return embalagensDisponiveis;
	}

	public void setEmbalagensDisponiveis(List<Embalagem> embalagensDisponiveis) {
		this.embalagensDisponiveis = embalagensDisponiveis;
	}

	public List<Embalagem> getEmbalagensSelecionadas() {
		return embalagensSelecionadas;
	}

	public void setEmbalagensSelecionadas(List<Embalagem> embalagensSelecionadas) {
		this.embalagensSelecionadas = embalagensSelecionadas;
	}

	public void adicionaEmbalagem(Embalagem e) {
		if (e.isSelecionado()) {
			embalagensSelecionadas.add(e);
		} else {
			embalagensSelecionadas.remove(e);
		}
	}
}
package com.sbsi.session.embalagem;

import java.util.List;

import javax.ejb.Remove;
import javax.ejb.Stateful;
import javax.persistence.EntityManager;

import org.jboss.seam.annotations.Destroy;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Logger;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Out;
import org.jboss.seam.log.Log;

import com.sbsi.entity.embalagem.Embalagem;

@Stateful
@Name("embalagemController")
public class EmbalagemSessionBean implements EmbalagemBean {

	@In
	private EntityManager entityManager;
	
	@In(create=true)
	@Out(required=false)
	private EmbalagemForm embalagemForm;
	
	@Logger
	private Log log;
	
	@Remove
	@Destroy
	public void remove() {
		// TODO Auto-generated method stub
		
	}
	
	public void populaEmbalagens() {
		List<Embalagem> listaEmbalagens = entityManager.createNamedQuery("todasEmbalagens").getResultList();
		embalagemForm.setEmbalagensDisponiveis(listaEmbalagens);
	}

	public String enviaEmbalagens() {
		log.info("{0} embalagens foram selecionadas", embalagemForm.getEmbalagensSelecionadas().size());
		return null;
	}

}

Omiti a Entidade em si e o arquivo .page.xml por acreditar que estes não interfiram no problema.

Obrigado pela ajuda!

Provavelmente não tem conversação aberta.

Muda o escopo para PAGE para você ver…

Ou então muda o seu método para retorno String e anota ele com @Begin(join = true)

Mudei o form pra escopo PAGE e funcionou. Valeu pela ajuda!

Então, por favor, edite o primeiro post e coloque um [RESOLVIDO] lá… :wink:

Abraço!