DataTable - Saber qtos retistro possue e nao mostrar na primeira vez

3 respostas
K

ola pessoal
eu tenho a seguinte pagina com o datatable

...
Nome: <h:inputText value="#{pessoaBuscaMB.pessoaFisicaDB.pessoaFisica.nome}" id="nome" maxlength="30" size="30" styleClass="FormCampo" ></h:inputText>
....

				<h:dataTable value="#{pessoaBuscaMB.listaPorParametroTeste}" id="tabela" var="pessoa" border="0"  rowClasses="TbltrTrue,TbltrFalse" width="750">
				
					<h:column>
						<f:facet name="header">
							<h:outputText value="Código" /> 
						</f:facet>
						<h:outputText value="#{pessoa.id}"/>
					</h:column>
					<h:column>
						<f:facet name="header">
							<h:outputText value="Nome" /> 
						</f:facet>
						<h:outputText value="#{pessoa.nome}"/>
					</h:column>
					<h:column>
						<f:facet name="header">
							<h:outputText value="CPF/CNPJ" /> 
						</f:facet>
						<h:outputText value="#{pessoa.cpf}"/>
					</h:column>	
					<h:column>
						<f:facet name="header">
							<h:outputText value="RG" /> 
						</f:facet>
						<h:outputText value="#{pessoa.rg}"/>
					</h:column>																
				</h:dataTable>
.....

1 Duvida
qdo eu abro a pagina ele ja busca o datatable, porem, na primeira vez, eu nao queria carregar o datatable, ate por que é apenas uma abertura pra mostrar ao usuario, entao nao tem a necessidade de fazer a pesquisa,
1-como eu faco isso, nao mostrar/realizar a pesquisa do datatable?

2 Duvida
todas as minhas buscas de registro no banco, sao feitas pra mostrar no maximo 100 registros, e no caso de eu chegar aos 100 registro, eu tenho que dar um aviso ao usuario que ele mostrou apenas 100 registros, e que os outros foram desconsiderados, entao,
2-como eu faco pra saber qtos registro tem no datatable?tem alguma forma de perguntar a ele ou tenho que fazer um metodo a parte pra saber qtos registros retornaram ou coisa do tipo

acho que por enqto é so
abs

T+

3 Respostas

felippesh

Krust,
existe um pattern para este problema, o Page-by-page iterator.
Veja no link abaixo uma implementação desse pattern no hibernate:

http://blog.hibernate.org/wiki.seam;jsessionid=D605F0C5072BC9F8ABBEDFC0E7894DF1?nodeId=1677&cid=101619

Aí, você poderá controlar o número de registros exibidos e a quantidade total.

K

felippesh:
Krust,
existe um pattern para este problema, o Page-by-page iterator.
Veja no link abaixo uma implementação desse pattern no hibernate:

http://blog.hibernate.org/wiki.seam;jsessionid=D605F0C5072BC9F8ABBEDFC0E7894DF1?nodeId=1677&cid=101619

Aí, você poderá controlar o número de registros exibidos e a quantidade total.

blz
nao sei se entendi muito bem, mas oq vc me passou é para bloquer o resultado a 100 registros?
bem, se for isso, ja esta feito no DB, e eu nao utilizo Hibernate por questoes de segurança e controle de banco de dados.
é tudo encima de procedures o sistema.

obrigado
T+ cara

L

Não existe forma de buscar o número de registros em uma expression language, vai ter que criar um método getSize no managed bean que retorne o valor da consulta ao tamanho.

Não existe uma forma padrão de impedir um h:dataTable de ser mostrado pela primeira vez. Uma forma é você começar com uma outra página sem dataTable que, com o pressionamento de botão ou link, vai para uma outra página que contém o dataTable. A outra forma é usar um atributo rendered que faz um bind de um método getter que retorna boolean, esse getter indica se é a hora de exibir a página ou não.

A segunda forma é um pouco chata, dou mais preferência à primeira.

Criado 15 de abril de 2008
Ultima resposta 16 de abr. de 2008
Respostas 3
Participantes 3