2011-10-02 11 views
6

Używam bogatego komponentu: fileUpload do przesyłania plików na mój serwer Problem polega na tym, że pliki te pasują do formularza, który wypełnia użytkownik, więc chcę używać jednego zewnętrznego przycisku do robienia to.Użyj bogatego komponentu zewnętrznego: fileUpload

Użytkownik wybiera pliki do przesłania, wypełnij formularz, a następnie kliknij przycisk "Prześlij" u dołu strony. To prześlij plik za pomocą formularza. Próbowałem tego tak:

Jestem w stanie ukryć przycisk wewnątrz panelu fileUpload, więc użytkownik nie klika na niego.

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

A co Próbowałem za pomocą przycisku jest

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

Ale to nie działa.

Odpowiedz

2

ja nie wiem, czy istnieje sposób, aby zrobić dokładnie to, co chcesz, ale tutaj jest inne rozwiązanie można użyć:

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

i fasola:

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

Nadzieja ta pomaga!

Powiązane problemy