Pessoal,
Alguém poderia postar aqui o que deve ser feito para a paginação funcionar em conjunto com ordenação das colunas?
Com certeza alguns membros do GUJ devem achar essa tarefa trivial, logo, poderiam dar um exemplo ‘esmiuçado’ da view.
Um abraço!
demys
Novembro 19, 2007, 1:39pm
#2
Segue um exemplo que não requer nenhuma linha de codigo no ManagedBean:
<t:dataTable id="data" border="1" var="obj" value="#{DepartamentoMB.array}"
columnClasses="list-column-left, list-column-center, list-column-center, list-column-center"
rowClasses="list-row-even, list-row-odd"
footerClass="list-column-center"
cellspacing="3" cellpadding="2"
renderedIfEmpty="false" rows="15" >
<t:column headerstyleClass="list-header-left" sortable="true" defaultSorted="true" >
<f:facet name="header">
<t:outputText value="Departamento" title="Clique aqui para ordenar por Departamento" />
</f:facet>
<t:outputText value="#{obj.nome}"/>
</t:column>
<t:column headerstyleClass="list-header-center" sortable="true" >
<f:facet name="header">
<t:outputText value="Telefone" title="Clique aqui para ordenar por Telefone" />
</f:facet>
<t:outputText value="#{obj.fone}"/>
</t:column>
<t:column headerstyleClass="list-header-center">
<f:facet name="header">
<h:outputText value="Editar" />
</f:facet>
<t:commandButton image="/images/pencil.gif" alt="Editar" action="#{DepartamentoMB.select}" />
</t:column>
<t:column headerstyleClass="list-header-center">
<f:facet name="header">
<h:outputText value="Excluir" />
</f:facet>
<t:commandButton image="/images/delete.gif" alt="Excluir" action="#{DepartamentoMB.confirmDelete}" />
</t:column>
<f:facet name="footer" >
<t:dataScroller id="scroll_1"
for="data"
fastStep="6"
pageCountVar="pageCount"
pageIndexVar="pageIndex"
paginator="true"
paginatorMaxPages="9"
paginatorActiveColumnStyle="font-weight:bold;"
renderFacetsIfSinglePage="false" >
<f:facet name="first" >
<t:graphicImage url="images/arrow-first.gif" border="0"
title="Avança para a primeira página" />
</f:facet>
<f:facet name="previous">
<t:graphicImage url="images/arrow-previous.gif" border="0"
title="Avança para a página antrior" />
</f:facet>
<f:facet name="fastrewind">
<t:graphicImage url="images/arrow-ff.gif" border="0"
title="Avança 6 páginas para trás" />
</f:facet>
<f:facet name="fastforward">
<t:graphicImage url="images/arrow-rw.gif" border="0"
title="Avança 6 páginas para frente" />
</f:facet>
<f:facet name="next">
<t:graphicImage url="images/arrow-next.gif" border="0"
title="Avança para a próxima página" />
</f:facet>
<f:facet name="last">
<t:graphicImage url="images/arrow-last.gif" border="0"
title="Avança para a última página" />
</f:facet>
</t:dataScroller>
</f:facet>
</t:dataTable>
Esse exemplo é bacana…obrigado!
Na realidade esse paço eu já tinha dado, mas estou tentando fazer com que a paginação ocorra sem erros.
Mesma coisa para a ordenação de colunas…
Abraço
Um erro que está me deixando perdido na paginação e na ordenação é esse:
org.apache.jasper.JasperException: javax.servlet.jsp.JspException: Duplicate component ID '_id0:_id35' found in view.
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:512)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
root cause
javax.servlet.ServletException: javax.servlet.jsp.JspException: Duplicate component ID '_id0:_id35' found in view.
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:839)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:776)
org.apache.jsp.sucesso_jsp._jspService(sucesso_jsp.java:111)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:97)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:334)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:314)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:264)
javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
com.sun.faces.context.ExternalContextImpl.dispatch(ExternalContextImpl.java:322)
com.sun.faces.application.ViewHandlerImpl.renderView(ViewHandlerImpl.java:147)
com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:87)
com.sun.faces.lifecycle.LifecycleImpl.phase(LifecycleImpl.java:200)
com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:117)
javax.faces.webapp.FacesServlet.service(FacesServlet.java:198)
org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
Ele só carrega a primeira página de resultados, na chamada para próxima lança essa exceção!
O que seria?
Mande o codigo da sua página que vai ficar mais facil leh ajudar
Segue:
<%@ taglib uri="/core" prefix="f" %>
<%@ taglib uri="/html" prefix="h" %>
<%@ taglib uri="http://myfaces.apache.org/tomahawk" prefix="t" %>
<%@ page language="java" contentType="text/html; charset=ISO-8859-1" %>
<html>
<head>
<title>.::Resultados::.</title>
</head>
<body>
<f:view>
<h:form>
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td>
<t:dataTable value="#{MUsuario.usuarios}" renderedIfEmpty="false" var="usuario" bgcolor="#FF6600" width="100%" border="1" id="lista" cellpadding="0" cellspacing="2" rows="50">
<t:column sortable="true" defaultSorted="true">
<f:facet name="header">
<h:outputText value="Nome" />
</f:facet>
<h:outputText value="#{usuario.dcNome}" />
</t:column>
<t:column>
<f:facet name="header">
<h:outputText value="Código" />
</f:facet>
<h:outputText value="#{usuario.cdUsuario}" />
</t:column>
<t:column>
<f:facet name="header">
<h:outputText value="Login" />
</f:facet>
<h:outputText value="#{usuario.dcLogin}" />
</t:column>
<t:column>
<f:facet name="header">
<h:outputText value="Senha" />
</f:facet>
<h:outputText value="#{usuario.dcSenha}" />
</t:column>
<t:column>
<f:facet name="header">
<h:outputText value="Alerta E-mail" />
</f:facet>
<h:outputText value="#{usuario.recebeAlertaEmail}" />
</t:column>
<t:column>
<f:facet name="header">
<h:outputText value="Mostrar Alerta" />
</f:facet>
<h:outputText value="#{usuario.mostrarAlerta}" />
</t:column>
<t:column>
<f:facet name="header">
<h:outputText value="Tipo" />
</f:facet>
<h:outputText value="#{usuario.cdTipo}" />
</t:column>
<t:column sortable="true" defaultSorted="true">
<f:facet name="header">
<h:outputText value="Inclusão" />
</f:facet>
<h:outputText value="#{usuario.dtInclusao}">
<f:convertDateTime pattern="dd/MM/yyyy" />
</h:outputText>
</t:column>
<t:column>
<f:facet name="header">
<h:outputText value="Ativo?" />
</f:facet>
<h:outputText value="#{usuario.idAtivo}" />
</t:column>
<t:column>
<f:facet name="header">
<h:outputText value="E-mail" />
</f:facet>
<h:outputText value="#{usuario.dcEmail}" />
</t:column>
</t:dataTable>
<t:dataScroller for="lista"
paginator="true"
id="lista_cli"
pageCountVar="pageCount"
pageIndexVar="pageIndex"
paginatorMaxPages="10"
renderFacetsIfSinglePage="false">
<f:facet name="first">
<h:outputText value="Primeira"></h:outputText>
</f:facet>
<f:facet name="last">
<h:outputText value="Última"></h:outputText>
</f:facet>
<f:facet name="previous">
<h:outputText value="Anterior"></h:outputText>
</f:facet>
<f:facet name="next">
<h:outputText value="Próximo"></h:outputText>
</f:facet>
</t:dataScroller>
</td>
</tr>
</table>
<h:outputLink value="index.jsf">
<f:verbatim>Voltar</f:verbatim>
</h:outputLink>
</h:form>
</f:view>
</body>
</html>
demys
Novembro 19, 2007, 2:09pm
#7
De uma conferida na propriedade id do dataTable se confere com a propriedade for do dataScroller .
Crie também um id para o dataScroller .
Verifique se na mesma pagina estes id s não se repetem com outros componentes.
demys
Novembro 19, 2007, 2:19pm
#8
experimente acrecentar este botoes do dataScroller:
<f:facet name="fastrewind">
<t:graphicImage url="images/arrow-ff.gif" border="0"
title="Avança 6 páginas para trás" />
</f:facet>
<f:facet name="fastforward">
<t:graphicImage url="images/arrow-rw.gif" border="0"
title="Avança 6 páginas para frente" />
</f:facet>
Ou tente alterar a propriedade paginator=“true” para paginator=“false” do dataScroller
[quote=demys]De uma conferida na propriedade id do dataTable se confere com a propriedade for do dataScroller .
Crie também um id para o dataScroller .
Verifique se na mesma pagina estes id s não se repetem com outros componentes.
[/quote]
Você mesmo pode conferir no código que mandei acima, não há diferença entre o que esá postado e o que estou testando…
Ou seja, tudo o que você recomendou, já está feito, é só olhar!
Tem problema misturar as bibliotecas do myfaces com a do jsf da SUN?
Não terá nenhum problema.