【问题标题】:How to Show Widget while p:fileUpload is in progress如何在 p:fileUpload 正在进行时显示小部件
【发布时间】:2014-09-17 13:22:23
【问题描述】:

我正在使用这个 fileUpload 从 Excel 工作表上传文档。

                    <h:form id="leForm2" enctype="multipart/form-data">
                        <p:fileUpload
                             mode="advanced"  showButtons="FALSE"
                             label="{messages['upload.xls']}"                                                       
                            fileUploadListener="#{bean.handleFileUpload}"                                                           
                            id="uploadCargaMasiva" update="messages3, :tabs:formTab2:documentoList" auto="true"                                                                                     
                            allowTypes="/(\.|\/)(xls|xlsx)$/"/>
                        <p:growl id="messages3" escape="true" sticky="false"
                            lifetime="800" showDetail="false" />                            
                    </h:form>

这按预期工作。我的问题是我需要在上传过程中显示一个 p:Dialog,但我找不到这样做的方法。

这是我的对话:

<p:dialog widgetVar="statusDialog" modal="true" draggable="false" closable="false" resizable="false">
    <p:graphicImage value="/images/ajaxloadingbar.gif" />
</p:dialog> 

我不知道怎么称呼它或在哪里:(。有什么建议吗?

【问题讨论】:

  • PrimeFaces fileUpload 有 onstartonerroroncomplete 用于客户端行为。你试过这个吗?喜欢onstart="PF('statusDialog').show()"
  • 感谢回复!,试过了,还是不行。还是我做错了什么?
  • 您使用的是什么 primefaces 版本?
  • Primefaces 3.4 不提供 onerror afaik 但其他两个应该可以工作。但语法应该是onstart="statusDialog.show()" - 我之前的回答与 PF 5.0 相关
  • onstart 工作正常!,但 oncomplete 似乎不起作用:我正在使用 statusDialog.hide() ,但它永远不会消失:/

标签: java file-upload primefaces


【解决方案1】:
                <h:form id="leForm2" enctype="multipart/form-data">
                    <p:fileUpload
                         mode="advanced"  showButtons="FALSE"
                         label="{messages['upload.xls']}"                                                       
                        fileUploadListener="#{bean.handleFileUpload}"                                                           
                        id="uploadCargaMasiva" update="messages3, :tabs:formTab2:documentoList" auto="true"                                                                                                            onstart="statusDialog.show()"
                        allowTypes="/(\.|\/)(xls|xlsx)$/"/>
                    <p:growl id="messages3" escape="true" sticky="false"
                        lifetime="800" showDetail="false" />                            
                </h:form>

在 bean.java 中,我在 handleFileUpload 的末尾添加了这一行:

     RequestContext.getCurrentInstance().execute("widgetHide()");

widgetHide 是一个 JS 函数:

<script type="text/javascript">  
    function widgetHide()
    {                                   
        statusDialog.hide();    
    }

</script>

正如建议的那样, onstart 和 oncomplete 应该可以解决问题,但由于某种原因 oncomplete 不起作用。所以我必须做这个解决方法才能让它发挥作用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    相关资源
    最近更新 更多