Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2005
    Messaggi
    101

    [JAVA][JSF] eseguire Download da link

    Salve a tutti
    Ho uno strano problema con le pagine create in jfs che eseguono un download di file da fyle system.
    la prima volta che eseguo il Download l'operazione avviene correttamente ,ma se cerco di eseguire qualche altro link , bottone, oppure il medesimo download la pagina si deve ricaricare . anche se lo fa in automatico la cosa è un po poco performate .

    esempio tag nella pagina
    codice:
    <h:commandLink
                            		id=""
                            		
                                    action="#{DettaglioLottoController.getDownload}" >
    	                            <f:param name="idFileRic" value="#{fileRicevuto.idLottoFileRicevuto}"/>
    	                            <h:outputText  id="id" value="#{fileRicevuto.qtaPdrAnomali}"
    	                                title="#{bundle['lotto.anomalie_download_righe_anomale']}"/>
                            </h:commandLink>
    nella classe java DettaglioLottoController vi è il metodo

    codice:
    public void getDownloadFileAnomalie() {
    
            ExternalContext context = FacesContext.getCurrentInstance().getExternalContext();
            Map map = context.getRequestParameterMap();
    
            String param = (String) map.get("idFileRic");
            LottoFileRicevuto lottoFileRicevuto=null;
    
            for (LottoFileRicevuto lottoFileRic : getLottoDettaglio().getFileRicevuti()) {
                if(lottoFileRic.getIdLottoFileRicevuto().toString().equalsIgnoreCase(param)){
                    lottoFileRicevuto= lottoFileRic;
                }
            }
    
            Lotto lotto= (Lotto) getLottoDettaglio();
            FileLottoAnomalie fileLottoAnomalie = new FileLottoAnomalie(lotto,lottoFileRicevuto);
            fileLottoAnomalie = getDettaglioLottoDelegate().getRigheAnomaleList(fileLottoAnomalie);
            String path = "archiveFolder";
            try {
                logger.debug("fileLottoAnomalie IdLotto: " + fileLottoAnomalie.getLotto().getIdLotto());
                logger.debug("fileLottoAnomalie Intestatario: " + fileLottoAnomalie.getLotto().getIntestatario());
    
                //se e' un file del LetturistaDd ed e' stato processato, cercalo nella archiveFolder.palmare
                if (fileLottoAnomalie.getLotto().getIntestatario() instanceof Letturista) {
                    logger.debug("Set search path to 'archiveFolder.palmare'");
                    path = "archiveFolder.palmare";
                }
    
                //se è un file non processato (scarto dell'intero file), cercalo nell'error folder
                if (fileLottoAnomalie.getLottoFileRicevuto().getQtaPdrAnomali() == null || fileLottoAnomalie.getLottoFileRicevuto().getQtaPdrAnomali() < 0) {
                    logger.debug("Set search path to 'errorFolder'");
                    path = "errorFolder";
                }
    
    
                String fileName = PropertiesManager.getInstance().getProperty(path) + "/" + fileLottoAnomalie.getLottoFileRicevuto().getNomeFile();
                logger.debug("calling download servlet with parameter: " + fileName);
    
                HttpServletRequest request = (HttpServletRequest) context.getRequest();
                String nomeFileOut = fileLottoAnomalie.getLottoFileRicevuto().getNomeFile() + "_" + DataTypeConverter.getStringFromDate(new Date(), DataTypeConverter.DATE_DDMMYYYY) + "_" + DataTypeConverter.getStringFromDate(new Date(), DataTypeConverter.DATE_HHMMSS) + "_ANOMALIE.csv";
                logger.debug("----> NOME FILE OUT: " + nomeFileOut);
    
                request.setAttribute("file_path_content", fileName);
                HttpServletResponse response = (HttpServletResponse) context.getResponse();
                RequestDispatcher dispatcher = request.getRequestDispatcher("/downloadRigheAnomalie");
    
                FacesContext.getCurrentInstance().responseComplete();
                dispatcher.forward(request, response);
            } catch (IOException e) {
                logger.error("Error reading i/o data", e);
            } catch (ServletException e) {
                logger.error("Error dispatching request", e);
            } catch (NullPointerException ne) {
                logger.error("Null Pointer Exception thrown " + ne.getMessage());
            }
        }
    Grazie a chi interviene

  2. #2
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320

    Moderazione

    Alcune considerazioni:

    1) Java ha un forum dedicato, quindi in futuro posta lì le discussioni su tale linguaggio/tecnologia
    2) Il codice, come prescritto dal Regolamento, va postato all'interno dei tag [CODE] e [/CODE] in modo da renderlo leggibile.

    Modifico e sposto.


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.