RichFaces FileUpload,不带添加按钮,并通过commandLink调用

RichFaces FileUpload without Add Button and call by commandLink

提问人:Jorge Rocha 提问时间:6/7/2017 最后编辑:Jorge Rocha 更新时间:6/9/2017 访问量:218

问:

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

但就我而言,我只想单击一个链接并查看浏览器以选择文件。

所以在我的代码中,我有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,但没有任何效果。

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

jquery 文件上传 jsf-2 xhtml 富面

评论


答:

1赞 Makhiel 6/7/2017 #1

你确定是 RichFaces 2.0 吗?

单击 fileUpload 不执行任何操作(就像手动单击一样)。您必须单击文件输入,例如

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

但我不确定是否所有浏览器都允许您在隐藏按钮时这样做。

评论

0赞 Jorge Rocha 6/7/2017
所以把 oncomplete 改成这个 (oncomplete=“#{rich:element('.rf-fu-btn-cnt-add input')}.click();”)
0赞 Jorge Rocha 6/7/2017
Richfaces 是 4 版本的sry
0赞 Makhiel 6/7/2017
保持原样(或者如果有必要,将 $ 更改为 jQuery),您不会查找 id。
0赞 Jorge Rocha 6/23/2017
我已经尝试了一切,谷歌Chrome阻止了我的弹出窗口,在Mozilla Firefox和IE中工作正常......发生这种情况是因为用户不是点击的。“oncomplete”等待“操作”,因此存在延迟,使 chrome 阻止弹出窗口。
0赞 Jorge Rocha 6/9/2017 #2

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

这部分代码:

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