2011-10-02 4 views
6

J'utilise le composant riche: fileUpload pour télécharger des fichiers sur mon serveur le problème est que ces fichiers vont avec un formulaire que l'utilisateur remplit, donc je veux utiliser un bouton externe pour faire ce.Utilisez le bouton externe pour rich: fileUpload

L'utilisateur sélectionne les fichiers à télécharger, remplit le formulaire puis clique sur un bouton "Envoyer" au bas de la page. Ceci télécharge le fichier avec le formulaire. Je l'ai essayé comme ceci:

Je suis capable de cacher le bouton à l'intérieur du panneau de fileUpload pour que l'utilisateur ne clique pas dessus.

<rich:fileUpload id="fileUploadId" 
     style="width: 100%; height: 130px;" 
     fileUploadListener="#{documentsBean.listener}" 
     maxFilesQuantity="1" 
     uploadButtonClass="display-none" 
     uploadButtonClassDisabled="display-none"> 
    </rich:fileUpload> 

Et ce que j'ai essayé avec le bouton est

<a4j: commandButton id="uploadFormButton" 
     value="Attach" 
     onclick="#{rich:component('fileUploadId')}.submitForm();" 
     oncomplete="#{rich:component('fileUploadId')}.clear(); return false;"/> 

Mais cela ne fonctionne pas.

Répondre

2

Je ne sais pas s'il y a un moyen de faire exactement ce que vous voulez, mais voici une autre solution, vous pouvez utiliser:

<html xmlns="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:rich="http://richfaces.org/rich" 
    xmlns:a4j="http://richfaces.org/a4j" 
    xmlns:st="http://spectotechnologies.com/jsf" 
    xmlns:t="http://myfaces.apache.org/tomahawk"> 

    ... 

    <h:form enctype="multipart/form-data"> 
     ... your fields ... 

     <t:inputFileUpload value="#{bean.document}" /> 

     <h:commandButton value="Submit" actionListener="#{bean.onButtonSubmitClick}" /> 
    </h:form> 
</html> 

et le haricot:

@ManagedBean 
@RequestScoped 
public class Bean 
{ 
    private UploadedFile m_oDocument; 

    public void setDocument(UploadedFile p_oDocument) 
    { 
     m_oDocument = p_oDocument; 
    } 

    @UploadedFileNotEmpty 
    @UploadedFileSize(max="10000000") 
    @UploadedFileExtension(accept="doc,docx,pdf,txt,rtf,xls,xlsx,zip,rar,jpg,jpeg,jpe,bmp,gif,png,csv,ppt,pptx,odp,pic,odt,ods") 
    public UploadedFile getDocument() 
    { 
     return m_oDocument; 
    } 

    public void onButtonSubmitClick(ActionEvent p_oEvent) 
    { 
     ... 
    } 
} 

Hope this aide!

Questions connexes