Estou com uma seguinte duvida. Possuo uma página de pesquisa de serviço, quando entro nela já carrega todos os objetos . Ao tentar fazer uma consulta, como faço para mostrar aquele objeto através da consulta?
OBS: A consulta está funcionando, quero apenas carregar os objetos por página para que não fique muitas informações em memoria.
Segue Meu Código:
<h1>Pesquisa de Servico</h1>
<h:form id="frmPesquisaServico">
<p:messages id="messages" autoUpdate="true" closable="true" />
<p:toolbar style="margin-top: 20px">
<p:toolbarGroup>
<p:button outcome="cadastroServico" value="Novo Serviço"/>
<p:commandButton value="Pesquisar" id="botaoPesquisa" action="#{consultaServico.buscaServicoDeVeiculoEntreDatasPorPlaca}" update="@form" />
</p:toolbarGroup>
</p:toolbar>
<br />
<p:panelGrid columns="2" id="painel" style="width: 100%" columnClasses="rotulo, campo">
<p:outputLabel value="data" />
<h:panelGroup>
<p:calendar value="#{consultaServico.dataInicio}" size="11" pattern="dd/MM/yyyy" maxlength="10"/>
a
<p:calendar value="#{consultaServico.dataFim}" size="11" pattern="dd/MM/yyyy" maxlength="10"/>
</h:panelGroup>
<p:outputLabel value="placa do Veículo" for="placa_veiculo" />
<p:autoComplete id="placa_veiculo" value="#{consultaServico.servicoSelecionado.carro}" size="10" dropdown="true"
completeMethod="#{consultaServico.completaPlacaVeiculo}" var="placaVeiculo" itemLabel="#{placaVeiculo.placa}"
itemValue="#{placaVeiculo}" forceSelection="true" minQueryLength="3" placeholder="Placa do Veículo"/>
</p:panelGrid>
<p:dataTable id="tabelaPesquisaServico" value="#{consultaServico.lazyServicos}" var="servico"
style="margin-top: 20px" emptyMessage="Nenhum Serviço encontrado." rows="10"
rowsPerPageTemplate="20,30,40,50" paginator="true" paginatorAlwaysVisible="false"
paginatorPosition="bottom" reflow="true" lazy="true">
<f:facet name="header">
TABELA DE PESQUISA DE SERVIÇO
</f:facet>
<p:column headerText="Cliente" style="text-align: center; width: 300px">
<p:outputLabel value="#{servico.cliente.nome}" />
</p:column>
<p:column headerText="Veículo" style="text-align: center; width: 120px">
<p:outputLabel value="#{servico.carro.modeloCarro.nome}" />
</p:column>
<p:column headerText="Data do Serviço" style="text-align: center; width: 130px">
<p:outputLabel value="#{servico.diaServico}">
<f:convertDateTime pattern="dd', 'MMMM ' de ' yyyy" />
</p:outputLabel>
</p:column>
<p:column headerText="Data da Garantia" style="text-align: center;width: 130px">
<p:outputLabel value="#{servico.diaGarantia}">
<f:convertDateTime pattern="dd', 'MMMM ' de ' yyyy" />
</p:outputLabel>
</p:column>
<p:column headerText="Valor do Serviço" style="text-align: center;width: 100px">
<p:outputLabel value="#{servico.valor}" />
</p:column>
<p:column headerText="Descrição" style="text-align: center;width: 100px">
<p:commandButton icon="ui-icon-extlink" title="Descrição do Serviço"
process="@this" oncomplete="PF('mostraDescricao').show();" update=":frmPesquisaServico:mostraServicosDialog">
<f:setPropertyActionListener target="#{consultaServico.servicoSelecionado}" value="#{servico}" />
</p:commandButton>
</p:column>
<p:column headerText="Observação" style="text-align: center;width: 100px">
<p:commandButton icon="ui-icon-extlink" title="Observação do Serviço"
process="@this" oncomplete="PF('mostraObservacao').show();" update=":frmPesquisaServico:mostraObservacaoDialog" >
<f:setPropertyActionListener target="#{consultaServico.servicoSelecionado}" value="#{servico}" />
</p:commandButton>
</p:column>
<p:column headerText="Editar / Excluir" style="text-align: center;width: 100px" >
<p:button outcome="cadastroServico" icon="ui-icon-pencil" title="Editar">
<f:param name="servico" value="#{servico.codigo}" />
</p:button>
-
<p:commandButton icon="ui-icon-trash" title="Excluir"
oncomplete="PF('confirmacaoExclusao').show()" process="@this"
update=":frmPesquisaServico:confirmacaoExclusaoDialog">
<f:setPropertyActionListener value="#{servico}" target="#{consultaServico.servicoSelecionado}" />
</p:commandButton>
</p:column>
</p:dataTable>
<p:confirmDialog id="confirmacaoExclusaoDialog" widgetVar="confirmacaoExclusao"
message="Deseja excluir o serviço do carro #{consultaServico.servicoSelecionado.carro.modeloCarro.nome} ?"
header="Exclusão de Serviço" severity="alert">
<p:button value="Não" onclick="PF('confirmacaoExclusao').hide(); return false;" />
<p:commandButton value="Sim" update=":frmPesquisaServico:tabelaPesquisaServico" process="@this" oncomplete="PF('confirmacaoExclusao').hide()"
action="#{consultaServico.excluir}" />
</p:confirmDialog>
<p:dialog id="mostraServicosDialog" header="DESCRIÇÃO DO SERVICO" widgetVar="mostraDescricao"
hideEffect="true" height="100" width="320" modal="true">
<p:dataList value="#{consultaServico.servicoSelecionado}" var="serv" itemType="disc"
rendered="#{not empty consultaServico.servicoSelecionado.descricaoServico}"> #{serv.descricaoServico}
</p:dataList>
<h:outputText value="Não Possui nenhuma descrição deste serviço." rendered="#{empty consultaServico.servicoSelecionado.descricaoServico}"/>
</p:dialog>
<p:dialog id="mostraObservacaoDialog" header="OBSERVAÇÃO DO SERVIÇO" widgetVar="mostraObservacao" hideEffect="true" height="100" width="320" modal="true">
<p:dataList value="#{consultaServico.servicoSelecionado}" var="servico" itemType="disc"
rendered="#{not empty consultaServico.servicoSelecionado.observacao}"> #{servico.observacao}
</p:dataList>
<h:outputText value="Não Possui nenhuma Observação deste serviço." rendered="#{empty consultaServico.servicoSelecionado.observacao}"/>
</p:dialog>
</h:form>
</ui:define>
MeuBean
@Named
@ViewScoped
public class ConsultaServico implements Serializable {
private static final long serialVersionUID = 1L;
@Inject
private ServicoService servicoService;
@Inject
private CarroService carroService;
@Inject
private ServicoDAO servicoDAO;
@Getter
private LazyServicoDataModel lazyServicos;
@Getter
@Setter
private Servico servicoSelecionado = new Servico();
@Getter
@Setter
private Carro carro;
@Setter
@Getter
private Date dataInicio;
@Setter
@Getter
private Date DataFim;
@Getter
private List<Servico> servicos;
public void inicializa() {
lazyServicos = new LazyServicoDataModel(servicoDAO);
}
/**
* Método que busca o Veículo entre Datas com a Placa do veiculo
* @return
*/
public void buscaServicoDeVeiculoEntreDatasPorPlaca() {
try{
servicos = servicoService.buscarServicoEntreDatasPorPlaca(dataInicio, DataFim, carro);
Messages.addGlobalInfo("Consulta de Placa: " + servicoSelecionado.getCarro().getPlaca()+" realizada com sucesso!");
}catch (Exception e) {
e.printStackTrace();
Messages.addGlobalError("Não foi possível consultar o Servico");
}
}
Classe que Carrega os objetos por página
public class LazyServicoDataModel extends LazyDataModel<Servico> implements Serializable {
private ServicoDAO servicoDAO;
public LazyServicoDataModel(ServicoDAO servicoDAO) {
this.servicoDAO = servicoDAO;
}
/**
* Método que mostra quantidade de registro por página e linha.
*/
@Override
public List<Servico> load(int primeiraLinha, int qtdRegistro, String sortField, SortOrder sortOrder, Map<String, Object> filters) {
List<Servico> servicos = this.servicoDAO.buscarComPaginacao(primeiraLinha,qtdRegistro);
this.setRowCount(this.servicoDAO.encontrarQuantidadeDeServico().intValue());
return servicos;
}
}