没有添加按钮的 RichFaces FileUpload 并通过 commandLink 调用

RichFaces FileUpload without Add Button and call by commandLink

我正在使用 Richfaces 4 fileupload 上传一个文件。

但在我的情况下,我只想单击一个 link 并在浏览器中查看 select 文件。

所以在我的代码中我有 commandLink:

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

而 fileUpload 的部分只是一个带有 fileUpload 的表单:

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

我已经在 commandLink 中调用了 id 表单和 rich:fileUpload id 但没有任何效果。

唯一的方法是使用弹出窗口,在这种情况下,它带有“+ 添加”按钮。

您确定是 RichFaces 2.0 吗?

点击文件上传没有任何反应(就像手动点击一样)。您必须单击文件输入,例如

$(".rf-fu-btn-cnt-add input").click()

但我不确定是否所有浏览器都允许您在隐藏按钮时执行此操作。

问题是因为上传浏览器被 Chrome 阻止了,在 Chrome 我无法访问浏览器来选择文件,但在 IE、Edge 中和 Firefox 我可以看到那个浏览器。 Chrome 阻止浏览器文件(弹出),因为操作和 oncomplete 之间有时间间隔

这部分代码:

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