2011-10-02 37 views
6

我使用組件rich:fileUpload上傳文件到我的服務器問題是,這些文件與用戶填充的表單一起,所以我想用一個外部按鈕做這個。使用外部按鈕豐富:fileUpload

用戶選擇要上傳的文件,填寫表單,然後單擊頁面底部的「提交」按鈕。這會將該文件與表單上傳。我試過這樣的:

我可以隱藏fileUpload面板內的按鈕,所以用戶不要點擊它。

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

而我已經試過用按鈕

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

但它不工作。

回答

2

我不知道是否有一種方法可以做到你想要什麼,但這裏是另一個解決方案,您可以使用:

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

和bean:

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

希望這幫助!