Olá pessoal, pq a minha tabelaP não aparece de jeito nenhum??? Os dados eu estou conferindo pela saída do servidor e a tabela está sendo preenchida. Antes eu tinha feito uma versão “orientada a paginas” e estava funcionando, agora usando ajax não está 
A tabelaP comeca na linha 23
Tem reRenders pra ela nas linhas 67, 110 e 240
<%@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">
<%@taglib uri="http://richfaces.org/rich" prefix="rich"%>
<%@taglib uri="http://richfaces.org/a4j" prefix="a4j"%>
<%@taglib prefix="f" uri="http://java.sun.com/jsf/core"%>
<%@taglib prefix="h" uri="http://java.sun.com/jsf/html"%>
<a4j:keepAlive beanName="cadastroBO"/>
<f:view>
<html>
<body>
<a4j:include viewId="/view/menu.jsp"/>
<a4j:outputPanel id="outputPanel">
<a4j:form>
<%--Cadastro Pessoa --%>
<rich:panel id="cadastroPessoas" rendered="#{cadastroBO.pessoaState}">
<rich:panel>
<rich:panel>
<%--Tabela das pessoas envolvidas--%>
<rich:dataTable id="tabelaP" value="#{cadastroBO.tabelaP}" var="tab2">
<f:facet name="header">
<rich:columnGroup>
<rich:column>
<h:outputText value="Contador"/>
</rich:column>
<rich:column>
<h:outputText value="Nome"/>
</rich:column>
<rich:column>
<h:outputText value="Categoria"/>
</rich:column>
<rich:column>
<h:outputText value="Condição"/>
</rich:column>
<rich:column>
<h:outputText value="Ações"/>
</rich:column>
</rich:columnGroup>
</f:facet>
<h:column>
<h:outputText value="#{tab2.k}"/>
</h:column>
<h:column>
<h:outputText value="#{tab2.nome}"/>
</h:column>
<h:column>
<rich:comboBox value = "#{tab2.auxCategoria}" defaultLabel = "Agressor/Vítima? ">
<f:selectItem itemValue="Agressor"/>
<f:selectItem itemValue="Vítima"/>
<f:selectItem itemValue="Vítima e Agressor"/>
</rich:comboBox>
</h:column>
<h:column>
<h:inputText value="#{tab2.condicao}"/>
</h:column>
<h:column>
<a4j:commandLink value="Excluir Pessoa" action="#{cadastroBO.removerLinha}" reRender="tabelaP">
<f:param name="cadastroBOIdP2" value="#{tab2.k}" />
</a4j:commandLink>
</h:column>
</rich:dataTable>
</rich:panel>
<rich:panel>
<a4j:commandButton value="Cadastrar e ir para o Fato" action="#{cadastroBO.cadastrarPessoas}" reRender="outputPanel"/>
</rich:panel>
</rich:panel>
<rich:panel id="painelBusca">
<f:facet name="header">
Pesquisar
</f:facet>
<p>
<h:outputLabel value="Nome: "/>
<h:inputText id="inputText" value="#{cadastroBO.buscaNomePessoa}">
<a4j:support event="onkeyup" action="#{cadastroBO.buscaPorNomePessoa}" reRender="tabelaBusca"/>
</h:inputText>
</p>
<%--Tabela da busca--%>
<rich:dataTable id="tabelaBusca" value="#{cadastroBO.tabelaBusca}" var="tab">
<f:facet name="header">
<rich:columnGroup>
<rich:column>
<h:outputText value="Contador"/>
</rich:column>
<rich:column>
<h:outputText value="Nome"/>
</rich:column>
<rich:column>
<h:outputText value="Ação1"/>
</rich:column>
<rich:column>
<h:outputText value="Ação2"/>
</rich:column>
</rich:columnGroup>
</f:facet>
<h:column>
<h:outputText value="#{tab.k}"/>
</h:column>
<h:column>
<h:outputText value="#{tab.nome}"/>
</h:column>
<h:column>
<a4j:commandLink value="Mostrar Pessoa" action="#{cadastroBO.mostrarPessoa}" reRender="painelPessoa">
<f:param name="cadastroBOIdP" value="#{tab.k}"/>
</a4j:commandLink>
</h:column>
<h:column>
<a4j:commandButton value="Adicionar" action="#{cadastroBO.inserirNaTabelaPelaBusca}" reRender="tabelaP,tabelaBusca">
<f:param name="cadastroBOIdP" value="#{tab.k}"/>
</a4j:commandButton>
</h:column>
</rich:dataTable>
</rich:panel>
<rich:separator/>
<rich:panel id="painelPessoa">
<p>
<h:outputText value = "Nome: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.nome}"/>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.pessoaVO.auxSexo}" defaultLabel = "Sexo: ">
<f:selectItem itemValue="Feminino"/>
<f:selectItem itemValue="Masculino"/>
</rich:comboBox>
</p>
<p>
<h:outputText value = "Data de Nascimento: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.auxData}"/>
</p>
<p>
<h:outputText value = "Idade: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.auxIdade}"/>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.pessoaVO.auxEstCivil}" defaultLabel = "Estado Civil: ">
<f:selectItem itemValue="Casado(a)"/>
<f:selectItem itemValue="Divorciado(a)"/>
<f:selectItem itemValue="Solteiro(a)"/>
<f:selectItem itemValue="Viúvo(a)"/>
<f:selectItem itemValue="Outros"/>
</rich:comboBox>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.pessoaVO.auxEscolaridade}" defaultLabel = "Escolaridade: ">
<f:selectItem itemValue="Analfabeto"/>
<f:selectItem itemValue="Fundamental Completo"/>
<f:selectItem itemValue="Fundamental Incompleto"/>
<f:selectItem itemValue="Médio Completo"/>
<f:selectItem itemValue="Médio Incompleto"/>
<f:selectItem itemValue="Superior Completo"/>
<f:selectItem itemValue="Superior Incompleto"/>
<f:selectItem itemValue="Outros"/>
</rich:comboBox>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.pessoaVO.renda}" defaultLabel = "Renda: ">
<f:selectItem itemValue="Menos que 1 Salário"/>
<f:selectItem itemValue="De 1 a 2 Salários"/>
<f:selectItem itemValue="De 3 a 5 Salários"/>
<f:selectItem itemValue="De 6 a 10 Salários"/>
<f:selectItem itemValue="De 11 a 15 Salários"/>
<f:selectItem itemValue="De 16 a 20 Salários"/>
<f:selectItem itemValue="Mais que 20 Sálarios"/>
<f:selectItem itemValue="Não Consta"/>
</rich:comboBox>
</p>
<p>
<h:outputText value = "RG: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.rg}"/>
</p>
<p>
<h:outputText value = "Nacionalidade: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.nacionalidade}"/>
</p>
<p>
<h:outputText value = "Naturalidade: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.naturalidade}"/>
</p>
<p>
<h:outputText value = "Cor da Pele: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.cor_pele}"/>
</p>
<p>
<h:outputText value = "Profissão: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.profissao}"/>
</p>
<p>
<h:outputText value = "Nome da Mãe: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.nome_mae}"/>
</p>
<p>
<h:outputText value = "Rua/Av: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.rua_ave}"/>
</p>
<p>
<h:outputText value = "Número: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.auxNumero}"/>
</p>
<p>
<h:outputText value = "Complemento: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.complemento}"/>
</p>
<p>
<h:outputText value = "Bairro: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.bairro}"/>
</p>
<p>
<h:outputText value = "CEP: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.cep}"/>
</p>
<p>
<h:outputText value = "Cidade: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.cidade}"/>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.pessoaVO.auxEgresso}" defaultLabel = "Egresso? ">
<f:selectItem itemValue="Não"/>
<f:selectItem itemValue="Sim"/>
</rich:comboBox>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.pessoaVO.auxPassagem}" defaultLabel = "Passagem pela Polícia? ">
<f:selectItem itemValue="Não"/>
<f:selectItem itemValue="Sim"/>
</rich:comboBox>
</p>
<p>
<h:outputText value = "Perfil: "/>
<h:inputText value = "#{cadastroBO.pessoaVO.perfil}"/>
</p>
<p>
<h:outputText value = "Observação: "/>
</p>
<p>
<h:inputTextarea value = "#{cadastroBO.pessoaVO.observacao}"/>
</p>
<p>
<a4j:commandButton type="submit" value="Adicionar" action="#{cadastroBO.inserirNaTabela}" reRender="tabelaP,tabelaBusca"/>
</p>
</rich:panel>
</rich:panel>
<%--Cadastro do Fato--%>
<rich:panel id="cadastroFato" rendered="#{cadastroBO.fatoState}">
<rich:panel>
<p>
<h:outputText value = "Distrito: "/>
<h:inputText value = "#{cadastroBO.fatoVO.distrito}"/>
</p>
<p>
<h:outputText value = "Número do Prontuário: "/>
<h:inputText value = "#{cadastroBO.fatoVO.auxNumPront}"/>
</p>
<p>
<h:outputText value = "Data Ocorrida: "/>
<h:inputText value = "#{cadastroBO.fatoVO.auxDataO}"/>
</p>
<p>
<h:outputText value = "Hora Ocorrida: "/>
<h:inputText value = "#{cadastroBO.fatoVO.auxHoraO}"/>
</p>
<p>
<h:outputText value = "Data Comunicada: "/>
<h:inputText value = "#{cadastroBO.fatoVO.auxDataC}"/>
</p>
<p>
<h:outputText value = "Hora Comunicada: "/>
<h:inputText value = "#{cadastroBO.fatoVO.auxHoraC}"/>
</p>
<p>
<h:outputText value = "Data Elaborada: "/>
<h:inputText value = "#{cadastroBO.fatoVO.auxDataE}"/>
</p>
<p>
<h:outputText value = "Hora Elaborada: "/>
<h:inputText value = "#{cadastroBO.fatoVO.auxHoraE}"/>
</p>
<p>
<h:outputText value = "Número do BO: "/>
<h:inputText value = "#{cadastroBO.fatoVO.num_bo}"/>
</p>
<p>
<h:outputText value = "Número do BO 2: "/>
<h:inputText value = "#{cadastroBO.fatoVO.num_boii}"/>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxTipoFato}" defaultLabel = "Tipo do Fato: ">
<f:selectItem itemValue="Homicídio"/>
<f:selectItem itemValue="Suicídio"/>
<f:selectItem itemValue="Latrocínio"/>
<f:selectItem itemValue="Acidente"/>
<f:selectItem itemValue="Outros"/>
<a4j:support event="onchange" action="#{cadastroBO.inteligencia}" reRender="cadastroFato"/>
</rich:comboBox>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxTipoL}" defaultLabel = "Local: ">
<f:selectItem itemValue="Bares"/>
<f:selectItem itemValue="Casas Noturnas"/>
<f:selectItem itemValue="Clubes"/>
<f:selectItem itemValue="Estrada de terra"/>
<f:selectItem itemValue="Praça"/>
<f:selectItem itemValue="Residência"/>
<f:selectItem itemValue="Rodovia de Alta Velocidade"/>
<f:selectItem itemValue="Rodovia de Média Velocidade"/>
<f:selectItem itemValue="Via Pública"/>
<f:selectItem itemValue="Outros Locais"/>
</rich:comboBox>
</p>
<p>
<h:outputText value = "Condição Local: "/>
<h:inputText value = "#{cadastroBO.fatoVO.cond_local}"/>
</p>
</rich:panel>
<rich:panel>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxInstr}" defaultLabel = "Instrumento: ">
<f:selectItem itemValue="Arma Branca"/>
<f:selectItem itemValue="Arma de Fogo"/>
<f:selectItem itemValue="Outros"/>
</rich:comboBox>
</p>
<p>
<h:outputText value = "Descrição do Instrumento: "/>
<h:inputText value = "#{cadastroBO.fatoVO.desc_instr}"/>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxLegalizada}" defaultLabel = "Legalizada? ">
<f:selectItem itemValue="Não"/>
<f:selectItem itemValue="Sim"/>
</rich:comboBox>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxMeios}" defaultLabel = "Meio: ">
<f:selectItem itemValue="Asfixia"/>
<f:selectItem itemValue="Explosivo"/>
<f:selectItem itemValue="Fogo"/>
<f:selectItem itemValue="Tortura"/>
<f:selectItem itemValue="Veneno"/>
<f:selectItem itemValue="Outros"/>
</rich:comboBox>
</p>
</rich:panel>
<rich:panel>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxAcidT}" defaultLabel = "Acidente de Transporte? ">
<f:selectItem itemValue="Não"/>
<f:selectItem itemValue="Sim"/>
</rich:comboBox>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxAcidTT}" defaultLabel = "Tipo: ">
<f:selectItem itemValue="Queda Via Pública"/>
<f:selectItem itemValue="Propulsão Humana"/>
<f:selectItem itemValue="Propulsão Animal"/>
</rich:comboBox>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxVeiculo}" defaultLabel = "Veículo: ">
<f:selectItem itemValue="Caminhão"/>
<f:selectItem itemValue="Carro"/>
<f:selectItem itemValue="Moto"/>
<f:selectItem itemValue="Ônibus"/>
<f:selectItem itemValue="Outros"/>
</rich:comboBox>
</p>
<p>
<h:outputText value = "Ano: "/>
<h:inputText value = "#{cadastroBO.fatoVO.auxAno}"/>
</p>
<p>
<h:outputText value = "Placa: "/>
<h:inputText value = "#{cadastroBO.fatoVO.placa}"/>
</p>
<p>
<h:outputText value = "Tipo: "/>
<h:inputText value = "#{cadastroBO.fatoVO.tipo}"/>
</p>
<p>
<h:outputText value = "Manutenção do Veículo: "/>
<h:inputText value = "#{cadastroBO.fatoVO.veic_manut}"/>
</p>
</rich:panel>
<rich:panel>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxAcidTrab}" defaultLabel = "Acidente de Trabalho? ">
<f:selectItem itemValue="Não"/>
<f:selectItem itemValue="Sim"/>
</rich:comboBox>
</p>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxHorarItinere}" defaultLabel = "Horário Itínere? ">
<f:selectItem itemValue="Não"/>
<f:selectItem itemValue="Sim"/>
</rich:comboBox>
</p>
</rich:panel>
<rich:panel>
<p>
<rich:comboBox value = "#{cadastroBO.fatoVO.auxAcidDomest}" defaultLabel = "Acidente Doméstico? ">
<f:selectItem itemValue="Não"/>
<f:selectItem itemValue="Sim"/>
</rich:comboBox>
</p>
<p>
<h:outputText value = "Descrição Doméstica: "/>
<h:inputText value = "#{cadastroBO.fatoVO.descr_domest}"/>
</p>
</rich:panel>
<rich:panel>
<p>
<h:outputText value = "Endereço: "/>
<h:inputText value = "#{cadastroBO.fatoVO.rua_ave}"/>
</p>
<p>
<h:outputText value = "Bairro: "/>
<h:inputText value = "#{cadastroBO.fatoVO.bairro}"/>
</p>
<p>
<h:outputText value = "Número: "/>
<h:inputText value = "#{cadastroBO.fatoVO.auxNumero}"/>
</p>
<p>
<h:outputText value = "Complemento: "/>
<h:inputText value = "#{cadastroBO.fatoVO.complemento}"/>
</p>
<p>
<h:outputText value = "CEP: "/>
<h:inputText value = "#{cadastroBO.fatoVO.cep}"/>
</p>
<p>
<h:outputText value = "Observação: "/>
<h:inputText value = "#{cadastroBO.fatoVO.observacao}"/>
</p>
</rich:panel>
<rich:panel>
<p>
<a4j:commandButton type="submit" value="Salvar" action="#{cadastroBO.cadastrarBO}"/>
</p>
</rich:panel>
</rich:panel>
</a4j:form>
</a4j:outputPanel>
</body>
</html>
</f:view>
//imports
public class CadastroBO implements Serializable{
public static final String PESSOA_STATE = "pessoa";
public static final String FATO_STATE = "fato";
public String currentState = PESSOA_STATE;
private SessionController sessionC;
private PessoaVO pessoaVO;
private PessoaDAO pessoaC;
private FatoVO fatoVO;
private FatoDAO fatoC;
private EnvolvimentoVO envolvimentoVO;
private EnvolvimentoDAO envolvimentoC;
private ArrayList<PessoaVO> tabelaBusca;
private ArrayList<PessoaVO> tabelaP; //tabela das pessoas envolvidas
private String buscaNomePessoa;
/**
* instanciamento de todas as variáveis
*/
public CadastroBO() {
sessionC = new SessionController();
pessoaC = new PessoaDAO();
pessoaVO = new PessoaVO();
envolvimentoC = new EnvolvimentoDAO();
fatoC = new FatoDAO();
fatoVO = new FatoVO();
tabelaBusca = new ArrayList<PessoaVO>();
tabelaP = new ArrayList<PessoaVO>();
}
/**
* cadastra as pessoas envolvidas no banco
*/
public void cadastrarPessoas() {
try {
for (int i = 0; i < tabelaP.size(); i++) {
pessoaC.converterVOToBean(tabelaP.get(i));
PessoaVO pessoa = new PessoaVO();
pessoa = pessoaC.busca(tabelaP.get(i).getNome(), tabelaP.get(i).getRg());
if (pessoa == null) { //se não existir no banco adiciona
pessoaC.adiciona(tabelaP.get(i));
}
long id = pessoaC.busca(pessoaVO.getNome(), pessoaVO.getRg()).getId();
tabelaP.get(i).setId(id);
}
}
catch(Exception e) {
e.printStackTrace();
}
//sessionC.setSessionMap("tabelaP2", tabelaP);
//tabelaBusca = null;
//tabelaP = null;
//pessoaVO = null;
currentState = FATO_STATE;
}
/**
* cadastra o fato e os envolvimentos
* @return
*/
public String cadastrarBO() {
try {
fatoC.converterVOToBean(fatoVO);
fatoC.adiciona(fatoVO);
long id = fatoC.busca(fatoVO.getNum_pront()).getId();
fatoVO.setId(id);
for (int i = 0; i < tabelaP.size(); i++) {
EnvolvimentoID compositeID = new EnvolvimentoID();
compositeID.setFato(fatoVO);
compositeID.setPessoa(tabelaP.get(i));
envolvimentoVO = new EnvolvimentoVO();
envolvimentoVO.setCompositeID(compositeID);
envolvimentoVO.setCond_pessoa(tabelaP.get(i).getCondicao());
envolvimentoVO.setCategoria(tabelaP.get(i).getCategoria());
System.out.println(envolvimentoVO.getCompositeID().getFato().getId());
System.out.println(envolvimentoVO.getCompositeID().getPessoa().getId());
System.out.println(envolvimentoVO.getCond_pessoa());
System.out.println(envolvimentoVO.getCategoria());
envolvimentoC.adiciona(envolvimentoVO);
}
}
catch(Exception e) {
e.printStackTrace();
return "erro";
}
return "BOSalvo";
}
/**
* métodos para manipular os estados da página
*/
public boolean isPessoaState() {
return (currentState.equals(PESSOA_STATE) || currentState == null);
}
public boolean isFatoState() {
return (currentState.equals(FATO_STATE));
}
/**
* insere a pessoa na tabela de envolvidos
*/
public void inserirNaTabela() {
boolean achei = false;
for (int i = 0; i < tabelaP.size(); i++) {
if (tabelaP.get(i).getNome().equals(pessoaVO.getNome()) && tabelaP.get(i).getRg().equals(pessoaVO.getRg())) {
achei = true;
}
}
if (!achei) {
pessoaVO.setK(tabelaP.size()+1);
tabelaP.add(pessoaVO);
}
pessoaVO = new PessoaVO();
for (int i = 0; i < tabelaP.size(); i++) {
System.out.println(tabelaP.get(i).getNome());
}
buscaNomePessoa = "";
tabelaBusca = new ArrayList<PessoaVO>();
}
/**
* Pega a pessoa selecionada na busca e insere na tabela dos envolvidos
*/
public void inserirNaTabelaPelaBusca() {
int i = Integer.parseInt(sessionC.getRequestParameterMap("cadastroBOIdP"));
pessoaVO = tabelaBusca.get(i - 1);
inserirNaTabela();
}
/**
* remove linha da tabela
* @return
*/
public void removerLinha() {
int i = Integer.parseInt(sessionC.getRequestParameterMap("cadastroBOIdP2"));
tabelaP.remove(i-1);
}
/**
* busca ajax pela substring
* @return
*/
public void buscaPorNomePessoa() {
if (!buscaNomePessoa.equals("") && !buscaNomePessoa.equals(null) && buscaNomePessoa.length() >= 2) {
try {
tabelaBusca = pessoaC.buscaSubstring(buscaNomePessoa);
}
catch (Exception e) {
e.printStackTrace();
}
for (int i = 0; i < tabelaBusca.size(); i++) {
tabelaBusca.get(i).setK(i + 1);
}
}
}
/**
* mostra os dados da pessoa selecionada na busca
*/
public String mostrarPessoa() {
int i = Integer.parseInt(sessionC.getRequestParameterMap("cadastroBOIdP"));
pessoaVO = tabelaBusca.get(i - 1);
pessoaC.converterVOToString(pessoaVO);
return null;
}
public void inteligencia() {
if (fatoVO.getAuxTipoFato().equals("Homicídio") || fatoVO.getAuxTipoFato().equals("Suicídio")) {
fatoVO.setAuxAcidT("Não");
fatoVO.setAuxAcidTrab("Não");
fatoVO.setAuxAcidDomest("Não");
}
else if (fatoVO.getAuxTipoFato().equals("Latrocínio")) {
}
else if (fatoVO.getAuxTipoFato().equals("Acidente")) {
}
else if (fatoVO.getAuxTipoFato().equals("Outros")) {
}
}
//sets e gets