usa primefaces… abaixo o codigo q eu fiz para meu sistema
JSF
<?xmlversion="1.0"encoding="ISO-8859-1"?><!DOCTYPEhtmlPUBLIC"-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"xmlns:ui="http://java.sun.com/jsf/facelets"xmlns:h="http://java.sun.com/jsf/html"xmlns:f="http://java.sun.com/jsf/core"xmlns:p="http://primefaces.prime.com.tr/ui"><h:head><metahttp-equiv="Content-Type"content="text/html; charset=utf-8"/><title>Arquivos</title></h:head><h:body><h:formenctype="multipart/form-data"update=":form:display"><divalign="center"><p:panelheader="Arquivos"style="width:1050px"><ui:includesrc="/paginas/Menu.xhtml"/><p:messagesid="mensagens"showSummary="true"/><p:fileUploadfileUploadListener="#{arquivosBean.fileUploadAction}"update="mensagens"multiple="true"/><br/><p:dataTablevar="arquivos"value="#{arquivosBean.listArquivos}"widgetVar="arquivosTable"emptyMessage="Nenhum arquivos Encontrado Nessas Condições"rowStyleClass="#{empty rowIx or rowIxmod2ne0?'even-row':'odd-row'}"rowIndexVar="rowIx"id="display"><f:facetname="header"><p:outputPanel><h:outputTextvalue="Procurar em todos os campos:"/><p:inputTextid="globalFilter"onkeyup="arquivosTable.filter()"style="width:150px"/></p:outputPanel></f:facet><p:columnfilterBy="#{arquivos.id}"headerText="Id"footerText="Id"filterMatchMode="contains"><h:outputTextvalue="#{arquivos.id}"/></p:column><p:columnfilterBy="#{arquivos.nome}"headerText="Descrição"footerText="Descrição"filterMatchMode="contains"><h:outputTextvalue="#{arquivos.nome}"/></p:column><p:columnfilterBy="#{arquivos.tipo}"headerText="Tipo"footerText="Tipo"filterMatchMode="contains"><h:outputTextvalue="#{arquivos.tipo}"/></p:column><p:columnfilterBy="#{arquivos.tamanho}"headerText="Tamanho"footerText="Tamanho"filterMatchMode="contains"><h:outputTextvalue="#{arquivos.tamanho}"/></p:column><p:columnstyle="width:100px"><h:panelGridcolumns="2"styleClass="actions"cellpadding="2"><h:commandButtonimage="/imagens/icones/download.gif"title="Download"><f:setPropertyActionListenervalue="#{arquivos.id}"target="#{arquivosBean.arquivo.id}"/><p:fileDownloadvalue="#{arquivosBean.file}"/></h:commandButton><h:commandButtonimage="/imagens/icones/excluir.gif"title="Excluir"action="#{arquivosBean.remove}"><f:setPropertyActionListenervalue="#{arquivos.id}"target="#{arquivosBean.arquivo.id}"/></h:commandButton></h:panelGrid></p:column></p:dataTable><style>.ui-datatable.ui-datatable-data.even-rowtd{background-color:#fcefa1;border-right:solid0px#4e6769; }.ui-datatable.ui-datatable-data.odd-rowtd{background-color:#f7f7f7;border-right:solid0px#4e6769; }</style></p:panel></div></h:form></h:body></html>