martes, 23 de octubre de 2012

DataPaginador

Si tenemos un dataPaginador, y cada vez que que cambiamos de pagina guardamos su estado y queremos en algún momento que regrese a la primer pagina, usar


getDataPaginator().gotoFirstPage();


http://www.icesoft.org/JForum/posts/list/4364.page

viernes, 20 de julio de 2012

outputResource en dataTable

 Cuando varios archivos en nuestra base de datos y queremos mostrarlos en una tabla, y poder descargarlos usando outputResource, se puede ser de la siguiente manera:

 1. Se lista los documentos en la tabla. Dentro de esta tabla hay un botón btnVerDocumentoAsociado,  en el cual , cuando se presiona se envía el id del documento, que se va a mostrar.

<ice:dataTable id="dbtArchivos" var="archivo"  value="#{bean.archivosAsociados}"  rows="5">
                                                                         <ice:column style="width:105pt;">
                                       <f:facet name="header">
                                       <ice:outputText value="#{formLabels.lblArchivo}" styleClass="form_label"/>
                                       </f:facet>
                                       <ice:outputText value="#{archivo.nomDocumento}"   styleClass="form_output"/>
                                    </ice:column>
                                                                       <ice:column>
                                     <f:facet name="header">
                                       <ice:outputText value="#{formLabels.lblTipoArchivo}" styleClass="form_label"/>
                                       </f:facet>
                                        <ice:graphicImage url="../../resources/images/mimeTypes/#{archivo.icono}" style="height: 25px;"/>   
                                    </ice:column>
                                   
                                    <ice:column>
                                     <f:facet name="header">
                                       </f:facet>
                                        <ice:commandButton id="btnVerDocumentoAsociado" actionListener="#{bean.generarDocumentoAsociado}"
                                               image="../../resources/images/catalogos/buscar.png" styleClass="appImageButton" rendered="#{archivo.idDocumento > 0}">
                                            <f:attribute name="archivo" value="#{archivo}"/>
                                        </ice:commandButton>
                                    </ice:column>
                                </ice:dataTable>


<ice:outputResource id="fileDocumentoAsociado" resource="#{planEmergenciaBean.documentoAsociadoPlanEmergencia}"
                                                                   fileName="#{planEmergenciaBean.planEmergenciaDocumentoAsociado.nomArchivo}"
                                                                   mimeType="#{planEmergenciaBean.planEmergenciaDocumentoAsociado.dscTipoMime}"  type="button"
                                                                    label="Clic para Descargar" shared="false" style="display:none;"  />

2. En el backingbean se obtiene el id, del documento.
3. Luego de la base de datos se extrae el documento( que puede ser blob a byte[]);
4. Se asociada al objeto del ouputResource.
5. Por medio de javaScript se presiona el ice:outputResource, que esta en la pantalla
.java
6. Finalmente aparece la pantalla de descarga


public void generarDocumentoAsociado(ActionEvent e){
        try{
// se obtiene el id del documento
              this.DocumentoAsociado=(Documento)e.getComponent().getAttributes().get("archivo");
// se consulta a la base de datos     
  DocArchivo documento= this.DocArchivoService.consultarDocArchivo(thisDocumentoAsociado.getIdDocumento());
//se asigna al   outputResource   
  this.documentoAsociado=new ByteArrayResource(documento.getBinArchivo());
   // se acciona el ice:outputResource  
   //Forma para invocar funciones js desde el bean 
//el ice:form debe tener un id (en este se llama frm)
        JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(),
                "onload('frm:fileDocumentoAsociado');");
        } catch (Exception e1) {
           
            e1.printStackTrace();
            FacesUtils.addErrorMessage("frm:error", "No se pudo obtener el archivo asociado.");
        }
    }


Función de javaScript
.javaScript

function onload(id) {
    document.onload(document.getElementById(id).click());
    return false;
}