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
Situação atual: já consegui passar o parâmetro, porém o
<p:commandButton value="Atualizar bean" action="#{emailControle.exibeModelo}" update="paramPanel">
<f:param name="exibir" value="#{item.codigo}"/>
</p:commandButton>
<p:outputPanel id="paramPanel">
<h:outputText value="#{email.codigo}"/><br/>
<h:outputText value="#{email.email}"/>
</p:outputPanel>
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
}
}
Obrigado, desde já!
Abraços