Primefaces DataTable - Instant Row Selection não redireciona

Pessoal,

estou tentando usar o Instant Row Selection do Primefaces, como o exemplo na página do primefaces http://www.primefaces.org/showcase/ui/datatableRowSelectionInstant.jsf . 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

[code]<?xml version="1.0" encoding="UTF-8"?>

<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>
[/code]

E este é meu Managed Bean SolicitacaoMB.java

[code]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 getListaTodos(){
    SolicitacaoDAO solicitacaoDAO1 = new SolicitacaoDAO();
    return solicitacaoDAO1.consultaTodos();
    }

    public List 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;
    }

}
[/code]

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>