[RESOLVIDO] PrimeFaces - Passagem de parâmetros com atualização de componente

Olá, pessoal.

Estou me matando aqui com esse problema ridículo, que nunca tive com ICEfaces. Já procurei mto mesmo, e nada.
Organizei a pergunta para ficar mais fácil de entender:

Objetivo: passar um parâmetro para o controle e atualizar os atributos do modelo na página com ajax.

Em detalhes: há um botão em cada linha de uma <p:dataTable> que deve enviar um atributo do modelo para o controle através da tag <f:param>. Esse botão deveria atualizar um <p:outputPanel>, que contém os atributos do modelo.

Situação atual: já consegui passar o parâmetro, porém o <p:outputPanel> não é atualizado. Isso só fica possível quando incluo ajax=“false”.

Botão que fica em cada linha da tabela:

<p:commandButton value="Atualizar bean" action="#{emailControle.exibeModelo}" update="paramPanel">
     <f:param name="exibir" value="#{item.codigo}"/>
</p:commandButton>

Painel a ser atualizado

<p:outputPanel id="paramPanel">
     <h:outputText value="#{email.codigo}"/><br/>                                                            
     <h:outputText value="#{email.email}"/>                                                    
</p:outputPanel>

Controle

[code]
import java.util.ArrayList;
import javax.faces.bean.ManagedBean;
import java.io.Serializable;
import javax.faces.bean.SessionScoped;

@ManagedBean
@SessionScoped
public class EmailControle implements Serializable {

private Email email = new Email();
private String testeParam;

public Email getEmail() {
    return email;
}

public void setEmail(Email email) {
    this.email = email;
}

public ArrayList<Email> getTodos() {
    ArrayList emails = new ArrayList<Email>();

    emails.add(new Email(1, "E-mail 1", true, true, true));
    emails.add(new Email(2, "E-mail 2", true, false, false));
    emails.add(new Email(3, "E-mail 3", true, false, true));
    emails.add(new Email(4, "E-mail 4", true, false, false));
    emails.add(new Email(5, "E-mail 5", true, true, true));
    emails.add(new Email(6, "E-mail 6", true, false, false));
    emails.add(new Email(7, "E-mail 7", true, false, true));

    return emails;
}

public void exibeModelo() {
    testeParam = FacesUtil.getParameter("exibir"); // Recupera o parâmetro lançado da página web.
    int codigo = Integer.parseInt(testeParam); // Código (ID) do bean

    // Encontra o e-mail cujo código é igual ao que foi passado por parâmetro
    for (Email e : getTodos()) {
        if (codigo == e.getCodigo()) {
            email = e;
            break;
        }
    }
    FacesUtil.put(email); // Atualiza o objeto da sessão
}

}[/code]

Obrigado, desde já!

Abraços

Boa tarde!

Jogue a propriedade “ajax = false” no seu button e se não funcionar tente colocar no update assim : “seuForm:id”.
Veja se ajuda.

Abraços.

paramPanel está dentro de outro form ?

tudo dentro de um único form.

esqueci de mudar o nome…
eu tinha testado com <f:setPropertyActionListener/>, mas tbm não tive sucesso.

tenta colocar update=“NomeDoForm:paramPanel”, que eu saiba quando vc deixa como ajax=false ele submete a pagina completa certo ?

Funcionou perfeitamente!!!

<h:form id="form">

E no commandButton:
update=“form:paramPanel”

Muito obrigado a todos por essa ajuda mto rápida!

Abraços