2017-06-07 1 views
1

Ich benutze Richfaces 4 fileUpload um eine Datei hochzuladen.RichFaces FileUpload ohne Add Button und call by commandLink

Aber in meinem Fall möchte ich nur in einen Link klicken und den Browser sehen, um die Datei auszuwählen.

Also in meinem Code ich habe command:

<a4j:commandLink id="showFileUpload" 
        execute="@this" 
       action="#{doSomething.Something(a)}" 
       render="@none" 
       oncomplete="#{rich:element('stratFileUpload')}.click();" 
       > 
       <h:graphicImage value="/images/A.png" /> 
      </a4j:commandLink> 

Und der Teil des Fileupload ist nur ein Formular mit dem Dateiupload darauf:

<h:form id="stratFileUploadForm"> 
    <rich:fileUpload id="stratFileUpload" execute="@this" 
     fileUploadListener="#{doUploadedFile}" 
     onuploadcomplete=" 
            jQuery(#{rich:element('stratFileUpload')}).find('.rf-fu-itm-lnk').click(); 
            " 
     noDuplicate="true" maxFilesQuantity="1" 
     sizeExceededLabel="#{msg['sizeExceeded']}" 
     uploadLabel="#{msg['upload']}" /> 
</h:form> 

nenne ich bereits in der command die ID form und reich: fileUpload id, aber nichts funktioniert.

Der einzige Weg, dies zu arbeiten ist mit Pop-up, und in diesem Fall kam es mit den „+ Hinzufügen“.

Antwort

0

Das Problem lag daran, dass der Upload-Browser vom Chrome blockiert wurde, im Chrome kann ich nicht auf den Browser zugreifen, um die Dateien auszuwählen, aber im IE, Edge und Firefox kann ich diesen Browser sehen. Chrome blockiert die Browser-Dateien (Pop-up), wegen der Zeit zwischen der Aktion und dem onComplete

des Code Dieses Teil von:

<a4j:commandLink id="showFileUpload" 
        execute="@this" 
       action="#{doSomething.Something(a)}" 
    ... 
      </a4j:commandLink> 
1

Sind Sie sicher, dass es RichFaces 2.0 ist?

Das Klicken auf den fileUpload tut nichts (genau wie wenn Sie manuell klicken). Sie müssen auf die Dateieingabe klicken, z.

aber ich bin mir nicht sicher, ob alle Browser Sie tun können, wenn die Schaltfläche ausgeblendet ist.

+0

So die onComplete auf diese # ändern (onComplete = "{reich: element . ('.rf-fu-btn-cnt-Add-Eingang')} klicken(); ") –

+0

die Richfaces ist die 4-Version sry –

+0

Halten Sie es, wie es ist (oder $ zu jQuery ändern, wenn Sie müssen), Sie schaue nicht nach oben IDs. – Makhiel