Pessoal, olá.
Estou apanhando com JSF, mais precisamente com a implementação do RichFaces. Pode ser bem idiota, mas não estou conseguindo mesmo.
O meu botão “Pesquisar”, que deveria disparar uma action, não faz nada. O que pode estar ocorrendo?
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<%--
--%>
<f:subview id="status">
<a4j:form id="status">
<table>
<tr>
<td><h:outputText value="Período:" /></td>
<td><h:inputText id="dataInicial" disabled="true" readonly="true" size="10" /></td>
<td> <h:outputText value="a" /> </td>
<td><h:inputText id="dataFinal" disabled="true" readonly="true" size="10" /></td>
<td>
<h:commandButton id="hoje" value="Hoje" action="blablabla" />
</td>
</tr>
<tr>
<td><h:outputText value="Tipo de NF-e:" /></td>
<td><h:selectOneMenu id="tipoNFe" >
<f:selectItem itemLabel="Normal" itemValue="Normal" />
<f:selectItem itemLabel="Em Contingência" itemValue="Em Contingência" />
</h:selectOneMenu ></td>
<td> </td>
<td><h:outputText value="Situação da NF-e:" /></td>
<td><h:selectOneMenu id="situacaoNFe" >
<f:selectItem itemLabel="Em Digitação" itemValue="Em Digitação" />
<f:selectItem itemLabel="Validada" itemValue="Validada" />
<f:selectItem itemLabel="Assinada" itemValue="Assinada" />
<f:selectItem itemLabel="Em Processamento" itemValue="Em Processamento" />
<f:selectItem itemLabel="Autorizada" itemValue="Autorizada" />
<f:selectItem itemLabel="Cancelada" itemValue="Cancelada" />
<f:selectItem itemLabel="Denegada" itemValue="Denegada" />
<f:selectItem itemLabel="Rejeitada" itemValue="Rejeitada" />
</h:selectOneMenu ></td>
</tr>
<tr>
<td><h:outputText value="Série:" /></td>
<td> <h:inputText id="serie" size="3" maxlength="3" /></td>
<td></td>
<td><h:outputText value="Número:" /></td>
<td> <h:inputText id="numeroInicial" size="9" maxlength="9" /></td>
<td><h:outputText value="a" /></td>
<td><h:inputText id="numeroFinal" size="9" maxlength="9" /></td>
</tr>
<tr>
<td><h:outputText value="CNPJ/CPF do Destinatário:" /></td>
<td> <h:inputText id="cnpjCpf" size="14" maxlength="14" /></td>
<td></td>
<td><h:outputText value="UF Destinatário:" /></td>
<td><h:selectOneMenu id="ufDestinatario" >
<f:selectItem itemValue="" />
<f:selectItem itemLabel="AC" itemValue="AC" />
<f:selectItem itemLabel="AL" itemValue="AL" />
<f:selectItem itemLabel="AM" itemValue="AM" />
<f:selectItem itemLabel="AP" itemValue="AP" />
<f:selectItem itemLabel="BA" itemValue="BA" />
<f:selectItem itemLabel="CE" itemValue="CE" />
<f:selectItem itemLabel="DF" itemValue="DF" />
<f:selectItem itemLabel="ES" itemValue="ES" />
<f:selectItem itemLabel="GO" itemValue="GO" />
<f:selectItem itemLabel="MA" itemValue="MA" />
<f:selectItem itemLabel="MG" itemValue="MG" />
<f:selectItem itemLabel="MS" itemValue="MS" />
<f:selectItem itemLabel="MT" itemValue="MT" />
<f:selectItem itemLabel="PA" itemValue="PA" />
<f:selectItem itemLabel="PB" itemValue="PB" />
<f:selectItem itemLabel="PE" itemValue="PE" />
<f:selectItem itemLabel="PI" itemValue="PI" />
<f:selectItem itemLabel="PR" itemValue="PR" />
<f:selectItem itemLabel="RJ" itemValue="RJ" />
<f:selectItem itemLabel="RN" itemValue="RN" />
<f:selectItem itemLabel="RO" itemValue="RO" />
<f:selectItem itemLabel="RR" itemValue="RR" />
<f:selectItem itemLabel="RS" itemValue="RS" />
<f:selectItem itemLabel="SC" itemValue="SC" />
<f:selectItem itemLabel="SE" itemValue="SE" />
<f:selectItem itemLabel="SP" itemValue="SP" />
<f:selectItem itemLabel="TO" itemValue="TO" />
</h:selectOneMenu ></td>
</tr>
<tr>
<td><h:outputText value="Chave de acesso NFe:" /></td>
<td><h:inputText id="chaveAcesso" size="44" maxlength="44" /></td>
</tr
<tr>
<td><h:selectBooleanCheckbox id="danfeImpresso" label="com Danfe Impresso" /></td>
</tr>
</table>
<a4j:commandButton style="align:right;" action="#{listaArquivos.todos}" value="Pesquisar" id="botao" />
</a4j:form>
<rich:dataTable id="tabela1" value="#{listaArquivos.notaFiscalEntityList}" var="arquivo" width="90%">
<f:facet name="header">
<rich:columnGroup>
<rich:column>
<h:outputText value="Série" />
</rich:column>
<rich:column>
<h:outputText value="Número" />
</rich:column>
<rich:column>
<h:outputText value="Emissão" />
</rich:column>
<rich:column>
<h:outputText value="CNPJ" />
</rich:column>
<rich:column>
<h:outputText value="Nome" />
</rich:column>
<rich:column>
<h:outputText value="UF" />
</rich:column>
<rich:column>
<h:outputText value="Tipo" />
</rich:column>
<rich:column>
<h:outputText value="Situação" />
</rich:column>
<rich:column>
<h:outputText value="Danfe Impresso" />
</rich:column>
</rich:columnGroup>
</f:facet>
<rich:column>
<h:outputText value="#{arquivo.nf.informacoesNotaFiscal.identificacao.serie}" />
</rich:column>
<rich:column>
<h:outputText value="#{arquivo.nf.informacoesNotaFiscal.identificacao.numeroDocumentoFiscal}" />
</rich:column>
<rich:column>
<h:outputText value="#{arquivo.nf.informacoesNotaFiscal.identificacao.dataEmissaoDocumentoFiscal}" />
</rich:column>
<rich:column>
<h:outputText value="#{arquivo.nf.informacoesNotaFiscal.destinatario.cnpj}" />
</rich:column>
<rich:column>
<h:outputText value="#{arquivo.nf.informacoesNotaFiscal.destinatario.nomeDestinatario}" />
</rich:column>
<rich:column>
<h:outputText value="#{arquivo.nf.informacoesNotaFiscal.destinatario.enderDest.uf}" />
</rich:column>
<rich:column>
<h:outputText value="#{arquivo.nf.informacoesNotaFiscal.identificacao.tipoDocumentoFiscal}" />
</rich:column>
<rich:column>
<h:outputText value="#{arquivo.status}" />
</rich:column>
<rich:column>
<h:outputText value="#{arquivo.nf.informacoesNotaFiscaldanfeImpresso}" />
</rich:column>
</rich:dataTable>
</f:subview>
Esse código acima é invocado por um outro jsp, eis o trecho:
<rich:tab label="Status das Notas">
<jsp:include page="status.jsp" />
</rich:tab>
Eis meu backing bean:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package action.arquivos;
import action.config.ConfiguraJSF;
import java.io.File;
import java.io.FileFilter;
import java.util.ArrayList;
import java.util.List;
import notafiscal.NotaFiscal;
import notafiscal.NotaFiscalEntity;
import xml.notafiscal.XMLNotaFiscal;
/**
*
* @author Felipe
*/
public class ListaArquivosJSF {
// "Coisas" que não variam durante a execução
private static int incrementador;
//0
private static final int DIGITADA = incrementador++;
//1
private static final int ASSINADA = incrementador++;
//2
private static final int TRANSMITIDA = incrementador++;
//3
private static final int VALIDADA = incrementador++;
//4
private static final int RETORNADA = incrementador++;
//5
private static final int CONTINGENCIADA = incrementador++;
private static final String EXTENSION_FILE_PATTERN = "lot.xml";
private static final List<NotaFiscalEntity> nfEntityCache = new ArrayList<NotaFiscalEntity>();
private List<NotaFiscalEntity> notaFiscalEntityList = new ArrayList<NotaFiscalEntity>();
public List<NotaFiscalEntity> getNotaFiscalEntityList() {
return notaFiscalEntityList;
}
public void setNotaFiscalEntityList(List<NotaFiscalEntity> notaFiscalEntityList) {
this.notaFiscalEntityList = notaFiscalEntityList;
}
public ListaArquivosJSF() {
//lista();
}
// Colocado fora do 'lista' para melhor performance
private static final FileFilter fileFilter = new FileFilter() {
public boolean accept(File file) {
return file.getName().toLowerCase().endsWith(EXTENSION_FILE_PATTERN);
}
};
public void todos() {
ConfiguraJSF config = new ConfiguraJSF();
try {
config.loadConf();
} catch (Exception e) {
e.printStackTrace();
}
//Mapeando os diretórios a partir de configurações da aplicação
File diretorioDigitadas = new File(config.getSettings().getCaminhoNotas());
File diretorioAssinadas = new File(config.getSettings().getCaminhoNotasAssinadas());
File diretorioTransmitidas = new File(config.getSettings().getCaminhoNotasTransmitidas());
File diretorioValidadas = new File(config.getSettings().getCaminhoNotasValidadas());
File diretorioRetorno = new File(config.getSettings().getCaminhoNotasRetorno());
File diretorioContingencia = new File(config.getSettings().getCaminhoNotasContingencia());
File fList[] = this.listAllTheFiles(diretorioDigitadas);
this.convertXMLFilesToNFBeans(fList, DIGITADA);
fList = this.listAllTheFiles(diretorioAssinadas);
this.convertXMLFilesToNFBeans(fList, ASSINADA);
fList = this.listAllTheFiles(diretorioTransmitidas);
this.convertXMLFilesToNFBeans(fList, TRANSMITIDA);
fList = this.listAllTheFiles(diretorioValidadas);
this.convertXMLFilesToNFBeans(fList, VALIDADA);
fList = this.listAllTheFiles(diretorioRetorno);
this.convertXMLFilesToNFBeans(fList, RETORNADA);
fList = this.listAllTheFiles(diretorioContingencia);
this.convertXMLFilesToNFBeans(fList, CONTINGENCIADA);
}
private File[] listAllTheFiles(File diretorio) {
return diretorio.listFiles(fileFilter);
}
private void convertXMLFilesToNFBeans(File[] fList, int param) {
try {
for (int i = 0; i < fList.length; i++) {
if(param == 2)
XMLNotaFiscal.xmlToLoteNotaFiscal(EXTENSION_FILE_PATTERN);
else{
NotaFiscal nf = XMLNotaFiscal.xmlToNotaFiscal(fList[i]);
notaFiscalEntityList.add(new NotaFiscalEntity(nf, param));}
}
} catch (Exception e) {
}
}
}
Agradeço qualquer ajuda.