Primefaces DataTable - Instant Row Selection não redireciona

0 respostas
marcuscarvalho1

Pessoal,

estou tentando usar o Instant Row Selection do Primefaces, como o exemplo na página do primefaces [url]http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf [/url]. Eu pretendo uma lista como a do segundo exemplo, que redireciona para outra página ao clicar duas vezes na linha. Na minha aplicação, ao clicar duas vezes, a linha chega a ficar colorida, como no exemplo, mas a página fica parada, não redireciona. Colocando no depurador, eu percebo que, quando chega na linha do OUTCOME (return "detalha" do managed bean, que deveria disparar o redirecionamento), o código chega a acionar o Method.invoke, assim como faz em todas as outras páginas cujo redirecionamento funciona, mas nesta, após sair do invoke não acontece nada! A página fica parada!

Segue aí minha página form_pendentes.xhtml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<ui:composition template="/layouts/layoutPrincipal.xhtml"
                xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.prime.com.tr/ui">

    <ui:define name="cabecalho">
        <link href="#{msgs.css}/cabecalho.css" rel="stylesheet" type="text/css" />
        <ui:include src="/cabecalho.xhtml" />
    </ui:define>

    <ui:define name="conteudo">

        <div style="padding-right: 5px; padding-left: 10px; padding-top: 10px">
            <img alt="imagem" src="/sca/img/setaAmarela.gif" width="10" height="10"/>
            <a class="menuAzulEscuro">Solicitações Pendentes</a><br/>
        </div>

        <div style="padding-right: 5px; padding-left: 10px; padding-top: 30px; font-size: x-small">
            Para entrar em uma solicitação, clique em seu número (#)
        </div>
        <div style="padding-right: 5px; padding-left: 10px; padding-top: 5px">
            <h:form>
                <p:dataTable id="table1" var="item" value="#{solicitacaoMB.pendentes}" selection="#{solicitacaoMB.solicitacao1} "
                             selectionMode="single" rowSelectListener="#{solicitacaoMB.preparaDetalha}" dblClickSelect="true"
                             paginator="true" rows="10">
                    <p:column>
                        <f:facet name="header" >
                            #
                        </f:facet>
                        <h:outputText value="#{item.id}" style="font-size: smaller" />
                    </p:column>
                    <p:column>
                        <f:facet name="header" >
                            Anuente
                        </f:facet>
                        <h:outputText value="#{item.nomeUsuario}" style="font-size: smaller" />
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            Siscomex
                        </f:facet>
                        <h:outputText value="#{item.perfilSiscomex}" style="font-size: smaller" />
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            Drawback
                        </f:facet>
                        <h:outputText value="#{item.perfilDrawback}" style="font-size: smaller" />
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            Pcex600
                        </f:facet>
                        <h:outputText value="#{item.acessoPcex600 ? 'SIM' : 'NÃO'}" style="font-size: smaller" />
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            Pcex603
                        </f:facet>
                        <h:outputText value="#{item.acessoPcex603 ? 'SIM' : 'NÃO'}" style="font-size: smaller" />
                    </p:column>
                    <p:column>
                        <f:facet name="header">
                            Pcex610
                        </f:facet>
                        <h:outputText value="#{item.acessoPcex610 ? 'SIM' : 'NÃO'}" style="font-size: smaller" />
                    </p:column>
                </p:dataTable>
            </h:form>
        </div>

    </ui:define>

    <ui:define name="menu_esquerdo">
        <ui:include src="/_menuEsquerdo.xhtml" />
    </ui:define>

    <ui:define name="rodape">
        <ui:include src="/rodape.xhtml" />
    </ui:define>

</ui:composition>

E este é meu Managed Bean SolicitacaoMB.java

package br.com.bb.mb;

import br.com.bb.bean.Solicitacao;
import br.com.bb.bean.SolicitacaoStatus;
import br.com.bb.dao.SolicitacaoDAO;
import br.com.bb.dao.StatusDAO;
import br.com.bb.dao.UsuarioDAO;
import java.io.IOException;
import java.util.Date;
import java.util.List;
import javax.faces.component.UIPanel;
import javax.faces.context.*;
import javax.servlet.http.HttpSession;
import org.primefaces.event.SelectEvent;

/**
 *
 * @author F6819321 modificado pela última vez em 12/11/2010
 */
public class SolicitacaoMB {

    private Solicitacao solicitacao1;
    private UIPanel panelForm;
    protected FacesContext fc = FacesContext.getCurrentInstance();
    protected HttpSession httpSession = (HttpSession) fc.getExternalContext().getSession(false);

    public UIPanel getPanelForm() {
        return panelForm;
    }

    public void setPanelForm(UIPanel panelForm) {
        this.panelForm = panelForm;
    }

    public List<Solicitacao> getListaTodos(){
        SolicitacaoDAO solicitacaoDAO1 = new SolicitacaoDAO();
        return solicitacaoDAO1.consultaTodos();
    }

    public List<Solicitacao> getPendentes(){
        SolicitacaoDAO solicitacaoDAO1 = new SolicitacaoDAO();
        return solicitacaoDAO1.consultaPendentes();
    }
    
    public String preparaInserir(){
        UsuarioDAO usuarioDAO1 = new UsuarioDAO();
        this.solicitacao1.setMatriculaSolicitante(usuarioDAO1.consultaUsuarioSessao());
        //Verifica se já existe outra solicitação pendente para o mesmo usuário
        SolicitacaoDAO solicitacaoDAO1 = new SolicitacaoDAO();
        if(solicitacaoDAO1.temSolicitacaoPendente(this.solicitacao1.getMatriculaUsuario())){
            httpSession.setAttribute("erro", "JÁ EXISTE SOLICITAÇÃO PENDENTE PARA O MESMO USUÁRIO RECIPIENTE.");
            this.solicitacao1 = new Solicitacao();
            return "erro";
        }else{
            this.solicitacao1.setPerfilDrawback(solicitacaoDAO1.perfilDrawback(this.solicitacao1.getPerfilDrawbackId()));
            this.solicitacao1.setPerfilSiscomex(solicitacaoDAO1.perfilSiscomex(this.solicitacao1.getPerfilSiscomexId()));
            httpSession.setAttribute("usuario_recipiente", usuarioDAO1.consultaUsuarioArh(this.solicitacao1.getMatriculaUsuario()));
            return "sucesso";
        }
    }

    public String insere(){
        UsuarioDAO usuarioDAO1 = new UsuarioDAO();
        this.solicitacao1.setMatriculaSolicitante(usuarioDAO1.consultaUsuarioSessao());
        //Verifica se já existe outra solicitação pendente para o mesmo usuário
        SolicitacaoDAO solicitacaoDAO1 = new SolicitacaoDAO();
        String resultadoInsere = solicitacaoDAO1.insere(this.solicitacao1);
        if (resultadoInsere.equals("sucesso")){
            StatusDAO statusDAO1 = new StatusDAO();
            SolicitacaoStatus solicitacaoStatus1 = new SolicitacaoStatus();
            solicitacaoStatus1.setData(new Date());
            solicitacaoStatus1.setJustificativa("");
            solicitacaoStatus1.setMatriculaUsuario(this.solicitacao1.getMatriculaSolicitante());
            solicitacaoStatus1.setSolicitacaoId(solicitacaoDAO1.achaId(this.solicitacao1.getMatriculaSolicitante(),
                                                this.solicitacao1.getMatriculaUsuario(), this.solicitacao1.getPerfilSiscomexId(),
                                                this.solicitacao1.getPerfilDrawbackId(), this.solicitacao1.isAcessoPcex600(),
                                                this.solicitacao1.isAcessoPcex603(), this.solicitacao1.isAcessoPcex610(), 1));
            solicitacaoStatus1.setStatusId(1);
            if(statusDAO1.insere(solicitacaoStatus1).equals("sucesso")){
                this.solicitacao1 = new Solicitacao();
                return "sucesso";
            }else{
                httpSession.setAttribute("erro", "INCLUSÃO DA SOLICITAÇÃO_STATUS FALHOU.");
                return "erro";
            }
        } else{
            httpSession.setAttribute("erro", "INCLUSÃO DA SOLICITAÇÃO FALHOU.");
            return "erro";
        }
    }

    public String preparaDetalha(SelectEvent event) {
        FacesContext.getCurrentInstance().getExternalContext().getFlash().put("solicitacao1", event.getObject());
        
        return "detalha";
    }

    public void altera(){
        SolicitacaoDAO solicitacaoDAO1 = new SolicitacaoDAO();
        solicitacaoDAO1.altera(this.solicitacao1);
    }

    public void exclui(){
        SolicitacaoDAO solicitacaoDAO1 = new SolicitacaoDAO();
        solicitacaoDAO1.exclui(this.solicitacao1.getId());
    }

    public Solicitacao getSolicitacao1() {
        if (solicitacao1 == null)
            this.solicitacao1 = new Solicitacao();
        return solicitacao1;
    }

    public void setSolicitacao1(Solicitacao solicitacao1) {
        this.solicitacao1 = solicitacao1;
    }

}

E este é meu faces-config.xml

<?xml version='1.0' encoding='UTF-8'?>

<!-- =========== FULL CONFIGURATION FILE ================================== -->

<faces-config version="2.0"
    xmlns="http://java.sun.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_2_0.xsd">
        
    <managed-bean>
        <managed-bean-name>solicitacaoMB</managed-bean-name>
        <managed-bean-class>br.com.bb.mb.SolicitacaoMB</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>statusMB</managed-bean-name>
        <managed-bean-class>br.com.bb.mb.StatusMB</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>usuarioMB</managed-bean-name>
        <managed-bean-class>br.com.bb.mb.UsuarioMB</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <managed-bean>
        <managed-bean-name>usuarioRecipienteMB</managed-bean-name>
        <managed-bean-class>br.com.bb.mb.UsuarioRecipienteMB</managed-bean-class>
        <managed-bean-scope>session</managed-bean-scope>
    </managed-bean>
    <navigation-rule>
      <from-view-id>/pgCadastro/form_cadastro.xhtml</from-view-id>
      <navigation-case>
       <from-outcome>sucesso</from-outcome>
       <to-view-id>/pgCadastro/form_confirma_novo.xhtml</to-view-id>
      </navigation-case>
      <navigation-case>
       <from-outcome>erro</from-outcome>
       <to-view-id>/erro.xhtml</to-view-id>
      </navigation-case>
    </navigation-rule>
    <navigation-rule>
      <from-view-id>/pgCadastro/form_confirma_novo.xhtml</from-view-id>
      <navigation-case>
       <from-outcome>sucesso</from-outcome>
       <to-view-id>/sucesso.xhtml</to-view-id>
      </navigation-case>
      <navigation-case>
       <from-outcome>erro</from-outcome>
       <to-view-id>/erro.xhtml</to-view-id>
      </navigation-case>
    </navigation-rule>
    <navigation-rule>
      <from-view-id>/pgRecentes/form_pendentes.xhtml</from-view-id>
      <navigation-case>
       <from-outcome>detalha</from-outcome>
       <to-view-id>/pgRecentes/form_detalhe.xhtml</to-view-id>
      </navigation-case>
    </navigation-rule>
    <navigation-rule>
      <from-view-id>/index.xhtml</from-view-id>
      <navigation-case>
       <from-outcome>sem_acesso</from-outcome>
       <to-view-id>/semAcesso.xhtml</to-view-id>
      </navigation-case>
    </navigation-rule>
    <application>
        <resource-bundle>
            <base-name>br.com.bb.properties.Padroes</base-name>
            <var>msgs</var>
        </resource-bundle> 
    </application>
    <lifecycle>
        <phase-listener>br.com.bb.listener.LogadoListener</phase-listener>
    </lifecycle>

</faces-config>
Criado 16 de março de 2011
Respostas 0
Participantes 1