2013-08-22 19 views
5

İlk sayfa yüklendikten sonra bir jsf sayfasını yeniden yüklemek ne olabilir?İlk sayfa yüklendikten sonra jsf sayfasını nasıl yeniden yüklersiniz?

javascript oncomplete="javascript:window.location.reload()" ile çalışıyorum, ama çalışmıyor oluyor:

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> 

Fasulye:

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!"); 
    } 
} 

bunu başka yolu vardır ? Ben <a4j:repeat>

+0

Tüm formları güncelleştirmeyi kullandığınızda çalışmaz, "javascript:" olmadan deneyin. Yeniden yükleme yapabilmelidir. ANCAK muhtemelen yanlış URL ile sayfayı yeniden yükleyeceğiniz sorunu olacaktır. "Face-redirect = true" ile gitmezseniz, URL'niz her zaman bir sayfa geride kalır. – noone

cevap

2

<p:fileUpload />@form değeri göz önüne alındığında, bir update niteliğini sahiptir yenilemek istiyorum, tekrar tüm form vermektedir. Eğer ajax özelliklerinden kurtulmak istiyorsanız

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

Aksi takdirde, ayrıca basic fileUpload bileşeni var.

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

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

Temel olarak, zaten ne yapıldığını javascripting deneyin!

0

, Oldukça iyi benim için çalışıyor

onsuccess="location.reload();" 

kullanmayı deneyin. Yeni yüklenen dosyayı görmek için kaydet düğmesine bastıktan sonra sayfamı yeniden yüklemek için kullanıyorum. update="@(form)"

İlgili konular