ola pessoal
eu quero fazer o seguinte, ao preencher os campos de busca, quero que ele liste logo abaixo, porem, sem dar o reflhes na tele, quero que ele atualize apenas a “tabela” com os registros.
vejam o meu codigo
Levando em consideração que seu método no managed bean e todas as configurações estejam devidamente funcionando, aconselho você utilizar um a4j:outputPanel ao redor da sua tabela e mandar que ele seja reRenderizado no lugar da tabela.
porem, nao funcionou mesmo assim, e ele esta mostrando apenas o cabecalho, provavelmente este “outputPanel” nao esta aumentando o tamanho automativo, pois os dados esta no HTML.
meu MB, caso estaja fazendo algo de errado
package br.com.krusst.precadastro.managedbean;
import java.util.ArrayList;
import java.util.List;
import javax.faces.context.FacesContext;
import br.com.krusst.precadastro.bean.Email;
import br.com.krusst.precadastro.bean.PaginaEstado;
import br.com.krusst.precadastro.bean.Status;
import br.com.krusst.precadastro.bean.PessoaFisica;
import br.com.krusst.precadastro.bean.Telefone;
import br.com.krusst.precadastro.dao.EmailDB;
import br.com.krusst.precadastro.dao.LogradouroDB;
import br.com.krusst.precadastro.dao.PessoaFisicaDB;
import br.com.krusst.precadastro.dao.TelefoneDB;
import br.com.krusst.precadastro.util.FacesUtils;
import br.com.krusst.precadastro.util.KrusstException;
import br.com.krusst.precadastro.dao.PessoaFisicaDB;
import br.com.krusst.precadastro.database.RetornoProcedure;
public class PessoaFisicaMB {
private PaginaEstado paginaEstadoAtual = PaginaEstado.ESTADO_DE_CADASTRO;
private String pessoaId;
private String pessoaNome;
private String pessoaDocumento;
private String pessoaStatusId;
private PessoaFisicaDB pessoaFisicaDB = new PessoaFisicaDB();
private PessoaFisica pessoaFisica = new PessoaFisica();
private LogradouroDB logradouroDB = new LogradouroDB();
private TelefoneDB telefoneDB = new TelefoneDB();
private EmailDB emailDB = new EmailDB();
private List<PessoaFisica> pessoaFisicaLista = new ArrayList<PessoaFisica>();
public PessoaFisicaMB() {
super();
}
public String getPessoaNome() {
return pessoaNome;
}
public String getPessoaDocumento() {
return pessoaDocumento;
}
public void setPessoaNome(String pessoaNome) {
this.pessoaNome = pessoaNome;
}
public void setPessoaDocumento(String pessoaDocumento) {
this.pessoaDocumento = pessoaDocumento;
}
public List<PessoaFisica> getPessoaFisicaLista() {
return pessoaFisicaLista;
}
public void setPessoaFisicaLista(List<PessoaFisica> pessoaFisicaLista) {
this.pessoaFisicaLista = pessoaFisicaLista;
}
public PaginaEstado getEstadoAtual() {
return paginaEstadoAtual;
}
public String getPessoaStatusId() {
if (pessoaStatusId == null){
pessoaStatusId = "0";
}
return pessoaStatusId;
}
public String getPessoaId() {
return pessoaId;
}
public PessoaFisicaDB getPessoaFisicaDB() {
return pessoaFisicaDB;
}
public PessoaFisica getPessoaFisica() {
return pessoaFisica;
}
public LogradouroDB getLogradouroDB() {
return logradouroDB;
}
public TelefoneDB getTelefoneDB() {
return telefoneDB;
}
public EmailDB getEmailDB() {
return emailDB;
}
public void setEstadoAtual(PaginaEstado estadoAtual) {
this.paginaEstadoAtual = estadoAtual;
}
public void setPessoaStatusId(String pessoaStatusId) {
this.pessoaStatusId = pessoaStatusId;
}
public void setPessoaId(String pessoaId) {
this.pessoaId = pessoaId;
}
public void setPessoaFisicaDB(PessoaFisicaDB pessoaFisicaDB) {
this.pessoaFisicaDB = pessoaFisicaDB;
}
public void setPessoaFisica(PessoaFisica pessoaFisica) {
this.pessoaFisica = pessoaFisica;
}
public void setLogradouroDB(LogradouroDB logradouroDB) {
this.logradouroDB = logradouroDB;
}
public void setTelefoneDB(TelefoneDB telefoneDB) {
this.telefoneDB = telefoneDB;
}
public void setEmailDB(EmailDB emailDB) {
this.emailDB = emailDB;
}
public int getPessoaFisicaListaQtd(){
return this.getPessoaFisicaLista().size();
}
public String busca() throws Exception{
if (getPessoaStatusId()!="0"){
this.pessoaFisicaDB.getPessoaFisica().setStatus(Status.getStatusPorId(getPessoaStatusId()));
}
/*Por causa do BUG de quando utilizar datable como ComandLink, teve-se que fazer acesso direto a classe
* e o comando
//this.setPessoaFisicaLista(this.pessoaFisicaDB.getListaPorParametro(this.pessoaFisica));
* parou de ser usado
* */
//this.pessoaFisicaDB.getPessoaFisica().setStatus()
//this.pessoaFisicaDB.getListaPorParametro();
/*
if(this.getPessoaFisicaLista().size()==0){
FacesUtils.addErrorMessage("A Busca não obteve resultados");
}
*/
return "lista";
}
public String acaoEditar(){
String value = "0";
value = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("id");
String paginaEstadoId = "0";
paginaEstadoId = (String) FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("paginaEstadoId");
this.setPessoaFisicaCarrega(Integer.parseInt(value));
this.setEstadoAtual(PaginaEstado.getPaginaEstadoPorId(paginaEstadoId));
return "form";
}
public String acaoRevisar(){
String retorno = null;
RetornoProcedure retornoProcedure = new RetornoProcedure();
try {
this.pessoaFisicaDB.revisar(this.pessoaFisica, retornoProcedure);
} catch (KrusstException e) {
e.printStackTrace();
}
if(retornoProcedure.getErroId()==0){
FacesUtils.addInfoMessage("Dados do cadastro OK.");
retorno = "cadastrar";
}else{
FacesUtils.addErrorMessage(retornoProcedure.getErroMensagem());
this.paginaEstadoAtual = PaginaEstado.ESTADO_DE_REVISAO;
}
//this.pessoaFisicaDB.getPessoaFisica().setPessoaFisicaLimpa();
return retorno;
}
public String acaoCadastrar(){
try {
this.pessoaFisicaDB.insert(this.pessoaFisica);
this.logradouroDB.insert(pessoaFisica.getId(),this.pessoaFisica.getLogradouro());
this.telefoneDB.insert(pessoaFisica.getId(),this.getPessoaFisica().getTelefone1());
this.telefoneDB.insert(pessoaFisica.getId(),this.getPessoaFisica().getTelefone2());
this.emailDB.insert(pessoaFisica.getId(),this.getPessoaFisica().getEmail1());
this.emailDB.insert(pessoaFisica.getId(),this.getPessoaFisica().getEmail2());
} catch (KrusstException e) {
e.printStackTrace();
}
FacesUtils.addInfoMessage("Cadastro de Pessoa realizado com sucesso, código do cadastro: " + this.pessoaFisica.getId());
this.pessoaFisicaDB.getPessoaFisica().setPessoaFisicaLimpa();
return "cadastrar";
}
public void setPessoaFisicaCarrega(int pessoaId){
List<Telefone> listaTelefone = new ArrayList<Telefone>();
List<Email> listaEmail = new ArrayList<Email>();
try {
this.setPessoaFisica(this.pessoaFisicaDB.getPorId(pessoaId));
this.pessoaFisica.setLogradouro(this.logradouroDB.getLogradouroPorParametro(pessoaId, 0));
listaTelefone = this.telefoneDB.getTelefonePorParametro(pessoaId, 0);
if (listaTelefone.size()>=1){this.pessoaFisica.setTelefone1(listaTelefone.get(0));}
if (listaTelefone.size()==2){this.pessoaFisica.setTelefone2(listaTelefone.get(1));}
listaEmail = this.emailDB.getEmailPorParametro(pessoaId, 0);
if (listaEmail.size()>=1){this.pessoaFisica.setEmail1(listaEmail.get(0));}
if (listaEmail.size()==2){this.pessoaFisica.setEmail2(listaEmail.get(1));}
} catch (Exception e) {
e.printStackTrace();
}
}
}
[quote]como assim?
como eu virificaria isso?[/quote]
Se está ecoando algum erro no console da IDE ou do Tomcat
[quote] bem, o resultado vem diferente de acordo com os campos que preencho.
era isso? [/quote]
Você havia dito acima qua mesmo depois do reRender a datatable continua vazia, por isso queria saber se os dados estão chegando corretamente do banco no managed bean.
bem, o datatable ta vindo populado, porem, ele nao “aparece” por uma questao de designer, sabe qdo um div fica encima do outro, é isso o que acontece quando eu coloco o outputPanel(quando eu olho o fonte da pagina gerada, a informacao esta la)
porem, mesmo assim, ele ta renderizando a pagina toda, nao apenas a parte do datatable
agora, saber qual a caquinho que eu to fazendo…ai te complicando
[quote] porem, mesmo assim, ele ta renderizando a pagina toda, nao apenas a parte do datatable
agora, saber qual a caquinho que eu to fazendo…ai te complicando [/quote]
Bem, pelo que vi, teu método busca() está retornando uma regra de navegação, logo ele está navegando entre páginas, mesmo que seja para a mesma página. Para que o JSF entenda que você quer continuar na mesma página você precisa retornar null ou ter seu método sem retorno (void).