2011-10-02 12 views
6

Sto usando il componente rich: fileUpload per caricare file sul mio server il problema è che quei file vanno insieme a un modulo che l'utente riempie, quindi voglio usare un pulsante esterno per fare Questo.Usa il pulsante esterno per rich: fileUpload

L'utente seleziona i file da caricare, compila il modulo e quindi fa clic su un pulsante "Invia" nella parte inferiore della pagina. Questo carica il file con il modulo. Ho provato in questo modo:

Sono in grado di nascondere il pulsante all'interno del pannello di fileUpload in modo che l'utente non fare clic su di esso.

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

E che cosa ho provato con il tasto è

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

Ma non funziona.

risposta

2

Non so se c'è un modo per fare esattamente quello che vuoi, ma qui è un'altra soluzione è possibile utilizzare:

<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> 

e il fagiolo:

@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) 
    { 
     ... 
    } 
} 

Spero che questo aiuta!