Entendi meu amigo…
É QUASE isso…
Eu não posso usar os filtros do primefaces… Mostrei pro usuário e ele preferiu da outra maneira rs…
Então eu tenho lá meus componentes <p:calendar> e <p:selectOneMenu> onde são setados esses 4 parâmetros para a pesquisa.
<p:calendar id="popupCal"
value="#{logBean.dataInicial}">
<p:calendar id="popupCal2"
value="#{logBean.dataFinal}">
<h:outputText value="Login: " style="width:100px"/>
<p:selectOneMenu value="#{logBean.login}">
<f:selectItem itemLabel="Todos os Usuários" itemValue=""/>
<f:selectItems value="#{usuarioBean.lista}" var="usuario"
itemLabel="#{usuario.login}" itemValue="#{usuario.login}" />
</p:selectOneMenu>
// tem mais um selectOneMenu pra Tipo de Ação
Depois eu tenho um botão da seguinte maneira:
<p:commandButton id="buscarHistoricoPorFiltros"
value="Filtrar"
icon="ui-icon-search"
action="#{logBean.buscarPorFiltros}"
ajax="false" />
E abaixo eu tenho meu datatable que está configurado da seguinte maneira:
<p:dataTable id="listagemHistoricoUsuario"
var="historicoUsuario"
value="#{logBean.lazyLogs}"
rules="groups"
rowsPerPageTemplate="10,15,20,30,40,50"
paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
paginator="true"
rows="10"
lazy="true"
paginatorPosition="bottom"
emptyMessage="Não foram encontrados registros de histórico.">
O que eu preciso agora é enviar o valor dos parâmetros que são enviados do CommandButton pro Bean, para essa classe LazyDataModel.
Até porque pro Bean ele envia…
[code]
public class LogAplicacaoLazyList extends LazyDataModel {
private static final long serialVersionUID = 1L;
private List logs;
@Override
public List<LogAplicacao> load(int startingAt, int maxPerPage,
String sortField, SortOrder sortOrder, Map<String, String> filters) {
try {
LogAplicaçãoDAOImpl logAplicaçãoDAOImpl = new LogAplicaçãoDAOImpl();
//buscar valor dos parâmetros através do action do commandbutton
// logs = logAplicaçãoDAOImpl.pesquisarPorDataLoginAcao(dataInicial, dataFinal,
// login, tipoAcao, maxPerPage, startingAt);
if(getRowCount() <= 0){
setRowCount(logAplicaçãoDAOImpl.pesquisarQuantidadeLogComFiltro());
}
setPageSize(maxPerPage);
return logs;
}catch (Exception e) {
System.out.println("Erro ao paginar... Mensagem de erro: "+ e.getMessage());
}
return logs;[/code]