2011-10-02 12 views
6

Tôi đang sử dụng thành phần phong phú: fileUpload để tải tệp lên máy chủ của tôi vấn đề là các tệp đó đi kèm với biểu mẫu người dùng điền, vì vậy tôi muốn sử dụng một nút bên ngoài để làm điều này.Sử dụng nút bên ngoài để làm giàu: fileUpload

Người dùng chọn tệp cần tải lên, điền vào biểu mẫu rồi nhấp vào nút "Gửi" ở cuối trang. Điều này tải lên các tập tin với các hình thức. Tôi đã thử nó như thế này:

Tôi có thể ẩn nút bên trong bảng điều khiển của tệp Tải lên để người dùng không nhấp vào đó.

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

Và những gì tôi đã thử với nút là

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

Nhưng nó không hoạt động.

Trả lời

2

Tôi không biết nếu có một cách để thực hiện chính xác những gì bạn muốn, nhưng đây là một giải pháp bạn có thể sử dụng:

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

và đậu:

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

Hy vọng điều này giúp!