2013-08-22 13 views
5

Che cosa è possibile ricaricare una pagina jsf dopo il caricamento delle primefaces?Come ricaricare la pagina jsf dopo l'upload delle primefaces?

cerco con javascript oncomplete="javascript:window.location.reload()", ma è non funziona:

xhtml:

<h:form> 
    <p:messages showDetail="true"/> 
    <p:fileUpload fileUploadListener="#{revistauploadBean.upload}" 
        mode="advanced" dragDropSupport="false" merge="true" 
        uploadLabel="Enviar" cancelLabel="Cancelar" 
        oncomplete="javascript:window.location.reload()" 
        label="Procurar PDF" sizeLimit="1000000000" fileLimit="3" 
        allowTypes="/(\.|\/)(pdf)$/" /> 
</h:form> 

Bean:

public void upload(FileUploadEvent event) throws SQLException { 
    LoginAuthentication user = new LoginAuthentication(); 
    FacesMessage msg = new FacesMessage("Success! ", event.getFile().getFileName() 
     + " is uploaded."); 
    FacesContext.getCurrentInstance().addMessage(null, msg); 
    // Do what you want with the file   
    try { 
     copyFile(event.getFile().getFileName(), event.getFile().getInputstream()); 
     ConectaBanco mysql = new ConectaBanco(); 
     mysql.insere("INSERT INTO edicoes VALUES (NULL, '" 
      + mysql.pegaIDrev(user.getNome()) 
      + "', NULL, NULL, NULL, NULL, '" 
      + event.getFile().getFileName() 
      + "');"); 
     File pasta = new File(caminhoPastaPDF 
      + "/convertidos/" 
      + event.getFile().getFileName()); 
     pasta.mkdir(); 
     convertePdf(event.getFile().getFileName()); 
     FacesMessage msg1 = new FacesMessage("Succesful", event.getFile().getFileName() 
      + " is uploaded."); 
     FacesContext.getCurrentInstance().addMessage(null, msg1); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

} 

public void copyFile(String fileName, InputStream in) { 
    try { 
     // write the inputStream to a FileOutputStream 
     OutputStream out = new FileOutputStream(new File(destination + fileName)); 
     int read = 0; 
     byte[] bytes = new byte[1024]; 
     while ((read = in.read(bytes)) != -1) { 
      out.write(bytes, 0, read); 
     } 
     in.close(); 
     out.flush(); 
     out.close(); 
     ////System.out.println("New file created!"); 
    } 
} 

Ci sono altri modi per farlo ? Voglio aggiornare una <a4j:repeat>

+0

uumm, provare senza "javascript:". Dovrebbe essere in grado di eseguire una ricarica. MA probabilmente avrai il problema di ricaricare la pagina con l'URL sbagliato. Se non navighi con? Faces-redirect = true, il tuo URL rimarrà sempre indietro di una pagina – noone

risposta

2

<p:fileUpload /> ha un attributo update che, dato @form valore, rende l'intera forma di nuovo.

<p:fileUpload fileUploadListener="#{fileUploadController.handleFileUpload}" 
    mode="advanced" dragDropSupport="false" 
    update="@form" sizeLimit="100000" fileLimit="3" 
    allowTypes="/(\.|\/)(gif|jpe?g|png)$/" /> 

In caso contrario, se si vuole sbarazzarsi di funzionalità Ajax, si ha anche la componente basic fileUpload.

<p:fileUpload value="#{fileUploadController.file}" mode="simple"/> 

<p:commandButton value="Submit" ajax="false" 
      actionListener="#{fileUploadController.upload}"/> 

Fondamentalmente, non provare a javascripting ciò che è già fatto!

0

prega, tenta di utilizzare

onsuccess="location.reload();" 

Per me funziona abbastanza bene. Lo sto usando per ricaricare la mia pagina dopo aver premuto il pulsante Salva per vedere il nuovo file caricato. Non funzionerebbe se si utilizza l'aggiornamento di tutti i moduli update="@(form)"

Problemi correlati