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>