Action não funciona dentro do rich:popupPanel

1 resposta
F

Oi gente tudo bem,

tenho um aplicativo que utiliza JSF 2 e Richfaces 4, agora eu criei um rich:popupPanel, porém dentro dele nenhuma das minhas action funciona, eles simplesmente nao são executadas, alguem tem ideia pq?

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

    </h:head>
    <h:body>
        <h:form id="Formulario">

            <h:inputText value="#{pessoaById.digitar}" />            
            <a4j:commandButton id="pesquisar" render="popup" value="Pesquisa com popup" action="#{pessoaById.pesquisaPessoa}"
                               oncomplete="#{rich:component('popup')}.show();"/>
            <h:commandButton value="aparece" action="#{pessoaById.aparece}" />
        </h:form>

        <br/><br/>

        <rich:tabPanel switchType="client">
            <rich:tab header="Dados Pessoais">
                #{pessoaById.dados}
                <br/>

            </rich:tab>

            <rich:tab header="Cursos">
                <p>We are working hard on RichFaces 4.0 which will have full JSF
                    2 integration. That is not all though, here is a summary of updates
                    and features:</p>

            </rich:tab>
        </rich:tabPanel>

        <br/>
        <br/>

        <!-- ModalPanel, inicio -->
        <rich:popupPanel id="popup" modal="true" resizeable="true"
                         onmaskclick="#{rich:component('popup')}.hide()">
            <f:facet name="header">
                <h:outputText value="Resultado da Pesquisa" />
            </f:facet>
            <f:facet name="controls">
                <h:outputLink value="#"
                              onclick="#{rich:component('popup')}.hide(); return false;">
                    X
                </h:outputLink>
            </f:facet>
            <div align="center">Salesianos encontrados:<br/><br/>
                <rich:message for="pesquisar" />

                <h:dataTable border="1" var="u" value="#{pessoaById.suaLista}">
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="id" />
                        </f:facet>
                        <h:outputText value="#{u.pes_nom_completo}" />
                    </h:column>
                    <h:column>
                        <f:facet name="header">
                            <h:outputText value="id" />
                        </f:facet>
                        <h:form>
                            <h:commandButton value="#{u.pes_id}" action="#{pessoaById.aparece}" >
                                <f:param name="idPessoa" value="#{u.pes_id}" />
                            </h:commandButton>
                        </h:form>

                    </h:column>
                </h:dataTable>
                <p>#{pessoaById.erro}</p>

                <p>Clique no nome do salesianos com o qual você deseja consultar.</p>
            </div>
        </rich:popupPanel>
        <!-- ModalPanel, fim -->
        <rich:messages/>


    </h:body>
</html>
PessoasById.java(o nome da classe nao significa q ela procura por ID)
package br.salesianos.teste;

import br.salesianos.db.CriadorDeSessaoNovo;
import br.salesianos.modelo.Pessoas;
import br.salesianos.modelo.Usuario;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;

import org.hibernate.Criteria;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author fabio.cunha
 */
@ManagedBean
public class PessoaById {

    private Session sessao = CriadorDeSessaoNovo.getSession();
    private Transaction tx = sessao.beginTransaction();
    private String campo = "pes_nom_completo";
    private String digitar;
    private List suaLista;
    private String dados = "";
    private Integer id;
    private String erro;
    //private String idPessoa = (String) FacesContext.getCurrentInstance().
    //        getExternalContext().getRequestParameterMap().get("idPessoa");

    public void pesquisaPessoa() {
        setSessao(CriadorDeSessaoNovo.getSession());
        Criteria listagem_query = getSessao().createCriteria(Pessoas.class).
                addOrder(Order.asc(campo)).
                add(Restrictions.like(campo, "%" + digitar + "%").
                ignoreCase());

        suaLista = listagem_query.list();
        List<Pessoas> lista = listagem_query.list();
        int tamanho_lista = lista.size();

    }

    public void aparece(){
        System.out.println("METODO aparece");
    }
//setters e getters

1 Resposta

F

O problema na verdade nao era do popupPanel, e sim do a4j:repeat, q tbm acontece com o ui:repeat,

meu managedBean usa o @RequestScoped, mudei ele para @ViewScoped e tambem mudei meu web.xml de

<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
<param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>server</param-value>
Criado 8 de junho de 2011
Ultima resposta 8 de jun. de 2011
Respostas 1
Participantes 1