Olá galera, tudo certo? Bem, na minha aplicação tenho filtros para consulta, um dataTable e um relatório. Quando o usuário clica em “Imprime” o relatório é gerado correto, porém, com a datatable vazia, pois ela é CARREGADA após clicar em consultar. Então, queria que o relatório APENAS FOSSE HABILITADO quando o usuário clicasse em CONSULTAR ou fosse fazer algum filtro, caso contrário imprimisse uma mensagem: Por favor, consulte algo…
Abaixo o código:
Você verifica no seu bean se a lista vai retornar vazia e dá uma mensagem.
R
Ricardo_Favero_Junio
Vou testar aqui e já posto o resultado.
Vlw
R
Ricardo_Favero_Junio
Bem, fiz o seguinte no bean:
private LazyDataModel<TipoMaterial> tipoMaterialList;
public void geraRelatorioTipoMaterialPDF() {
if (tipoMaterialList != null) {
geraRelatorioTipoMaterial(true);
} else {
info("Por favor, faça uma consulta..");
}
}
public void geraRelatorioTipoMaterial(boolean isPDF) {
List<TipoMaterial> listaRelatorio = m.listaTipoMaterialRelatorio(montaParametros());
if (isPDF) {
geraRelatorioPDF(listaRelatorio, RELATORIO_TIPOMATERIAL);
}
}
Porém não funcionou…Pode ajudar ??
V
Valeio_Bezerra
Na verdade o teste não é esse, pois seu objeto da lista existe, só está vazio, tente assim:
licvoidgeraRelatorioTipoMaterialPDF(){if(!tipoMaterialList.isEmpty()){geraRelatorioTipoMaterial(true); }else{info("Por favor, faça uma consulta.."); }
}
R
Ricardo_Favero_Junio
Valeio Bezerra:
Na verdade o teste não é esse, pois seu objeto da lista existe, só está vazio, tente assim:
lic void geraRelatorioTipoMaterialPDF() {
if (!tipoMaterialList.isEmpty()) {
geraRelatorioTipoMaterial(true);
} else {
info("Por favor, faça uma consulta..");
}
}
Ok, mto obrigado. Vou testar aki.
R
Ricardo_Favero_Junio
Valeio Bezerra:
Na verdade o teste não é esse, pois seu objeto da lista existe, só está vazio, tente assim:
lic void geraRelatorioTipoMaterialPDF() {
if (!tipoMaterialList.isEmpty()) {
geraRelatorioTipoMaterial(true);
} else {
info("Por favor, faça uma consulta..");
}
}
Está dando problema no isEmpty(). Não sei se o problema é por se tratar de uma lista em Lazy. Saberia algo em que eu possa substituir o isEmpty por alguma coisa similar?
Estou procurando aqui…
V
Valeio_Bezerra
Coloca o bean todo.
R
Ricardo_Favero_Junio
Ok. abaixo o bean de TipoMaterial sem os IMPORTS…
@ManagedBean@ViewScopedpublicclassTipoMaterialJsfBeanextendsBaseCRUDJSFBean<TipoMaterial>{publicstaticfinalStringRELATORIO_TIPOMATERIAL="tipomaterial";privatestaticLoggerlog=LoggerFactory.getLogger(TipoMaterialJsfBean.class);@EJBprivateTipoMaterialServicem;privateLazyDataModel<TipoMaterial>tipoMaterialList;privateStringtipoCodigo;privateStringtipoDescricao;publicvoidgeraRelatorioTipoMaterialPDF(){if(tipoMaterialList!=null){geraRelatorioTipoMaterial(true);}else{info("Por favor, faça uma consulta..");}}publicvoidgeraRelatorioTipoMaterial(booleanisPDF){List<TipoMaterial>listaRelatorio=m.listaTipoMaterialRelatorio(montaParametros());if(isPDF){geraRelatorioPDF(listaRelatorio,RELATORIO_TIPOMATERIAL);}}publicTipoMaterialJsfBean(){}@OverridepublicvoidrenovarTabela(){log.trace("####### Entrou em "+ReflectionUtil.m());filtraTipoMaterial();}publicvoidfiltraTipoMaterial(){tipoMaterialList=newLazyDataModel<TipoMaterial>(){@OverridepublicList<TipoMaterial>load(intfirst,intpageSize,StringsortField,SortOrdersortOrder,Map<String,String>filters){returnm.listaTipoMaterialPaginada(montaParametros(),first,pageSize,sortField,sortOrder);}};tipoMaterialList.setRowCount(m.listaTipoMaterialCount(montaParametros()));}privateMap<String,Object>montaParametros(){Map<String,Object>p=newHashMap<String,Object>();p.put("tipoDescricao",tipoDescricao);p.put("tipoCodigo",tipoCodigo);returnp;}publicStringgetTipoDescricao(){returntipoDescricao;}publicvoidsetTipoDescricao(StringtipoDescricao){this.tipoDescricao=tipoDescricao;}publicLazyDataModel<TipoMaterial>getTipoMaterialList(){returntipoMaterialList;}publicvoidsetTipoMaterialList(LazyDataModel<TipoMaterial>tipoMaterialList){this.tipoMaterialList=tipoMaterialList;}publicStringgetTipoCodigo(){returntipoCodigo;}publicvoidsetTipoCodigo(StringtipoCodigo){this.tipoCodigo=tipoCodigo;}}
Mais uma vez, vlw pela ajuda… Se conseguir me ajudar a “trancar” o relatório nao sabe o quanto estará me ajudando…
Abc.
V
Valeio_Bezerra
Instancie o atributo tipoMaterialList no construtor.
R
Ricardo_Favero_Junio
Valeio Bezerra:
Instancie o atributo tipoMaterialList no construtor.
Desculpe, mas n entendi…
R
Ricardo_Favero_Junio
Valeio Bezerra:
Instancie o atributo tipoMaterialList no construtor.
Eu não poderia colocar um disable no BOTÃO RELATÓRIO será?
V
Valeio_Bezerra
public TipoMaterialJsfBean() {
tipoMaterialList = new LazyDataModel<TipoMaterial>();
}
bote isso
R
Ricardo_Favero_Junio
Valeio Bezerra:
public TipoMaterialJsfBean() {
tipoMaterialList = new LazyDataModel<TipoMaterial>();
}
Saberia me informar se tem algum outro teste que posso fazer??
V
Valeio_Bezerra
agora no teste faça isso.
licvoidgeraRelatorioTipoMaterialPDF(){if(!tipoMaterialList.isEmpty()){geraRelatorioTipoMaterial(true); }else{info("Por favor, faça uma consulta.."); }
}
V
Valeio_Bezerra
Assim:
R
Ricardo_Favero_Junio
Valeio Bezerra:
agora no teste faça isso.
lic void geraRelatorioTipoMaterialPDF() {
if (!tipoMaterialList.isEmpty()) {
geraRelatorioTipoMaterial(true);
} else {
info("Por favor, faça uma consulta..");
}
}
Ok, já fiz esse teste, porém no IsEmpty() dá o seguinte erro: cannot find symbol…
Abaixo o código do bean:
publicvoidgeraRelatorioTipoMaterialPDF(){if(!tipoMaterialList.isEmpty()){geraRelatorioTipoMaterial(true);}else{info("Por favor, faça uma consulta..");}}publicvoidgeraRelatorioTipoMaterial(booleanisPDF){List<TipoMaterial>listaRelatorio=m.listaTipoMaterialRelatorio(montaParametros());if(isPDF){geraRelatorioPDF(listaRelatorio,RELATORIO_TIPOMATERIAL);}}publicTipoMaterialJsfBean(){tipoMaterialList=newLazyDataModel<TipoMaterial>(){@OverridepublicList<TipoMaterial>load(intfirst,intpageSize,StringsortField,SortOrdersortOrder,Map<String,String>filters){returnm.listaTipoMaterialPaginada(montaParametros(),first,pageSize,sortField,sortOrder);}};}
V
Valeio_Bezerra
Vixe, o pior que uso List, achei que ia dá no mesmo rs
R
Ricardo_Favero_Junio
Bem, só se eu usar o List, mas sei não hein, pq nas listas pequenas até lá vai, mas tenho umas ae que vai ficar meio dia pra carregar dae…
Alguma idéia ??
V
Valeio_Bezerra
crie um atributo boolean inicie com true ele e quando ele escolher os filtros coloque como false e então você coloca no atributo disabled do commandButton
R
Ricardo_Favero_Junio
Vou tentar aki, daki a pouco posto o resultado.
Vlw ae.