【问题标题】:Update component before actionListener finish在 actionListener 完成之前更新组件
【发布时间】:2018-04-19 19:30:20
【问题描述】:

我有一个对话框,当用户按下“接受”按钮时,我想在同一个对话框中显示一个 ProgressBar,但它会在 actionListener 完成时更新。

<p:dialog id="dlgGenerarLista" modal="true" height="180" width="500" header="Generar Lista de Trabajo" widgetVar="dlgGenerarLista">
    <p:commandButton onclick="PF('dlgGenerarLista').hide();" value="Cancel" />
    <p:commandButton id="btnAceptarGenerar" value="Accept"
    actionListener="#{crearEstrategiaBeans.GenerarListaTrabajo}"
    oncomplete="PF('dlgGenerarLista').hide();"update="basic"/> 
    <p:panel id="basic" widgetVar="basic">                 
        <p:progressBar rendered="#{crearEstrategiaBeans.visibilidadBarraProgreso}" id="progressBarIndeterminate"  mode="indeterminate"/>
    </p:panel>   
</p:dialog>

在方法 GenerarListaTrabajo() 我说 visibilidadBarraProgreso = "true" ,所以我希望在那一刻它显示进度条。它在所有过程完成时显示的进度条。

【问题讨论】:

  • 抱歉,我很难理解您的问题。这可能是由于我不是以英语为母语的人造成的。还要靠你的英语。也许你可以使用谷歌翻译之类的东西来把事情弄清楚。
  • @Kukeltje "我有一个对话框,它有一个渲染为 false 的进度条,当我按下 OK 按钮时,我将状态更改为 true 以显示它,但它仅在 actionListener 为完成,我希望它在按下的那一刻显示出来。”
  • uhhh....如果progressbar 的rendered 属性为false,并且您只在命令按钮的update 属性中更新周围的面板,这正是您告诉它要做的事情。不要使用渲染属性,而是使用一些 css 使其可见。
  • @Kukeltje 但是在 actionListener 的方法中,我将进度条的属性更改为 true,但我理解你用 CSS 说的话。我试试,谢谢:)
  • 更新总是在动作/监听器之后处理。这就是它的工作原理。它在执行期间无法更新。

标签: jsf primefaces xhtml


【解决方案1】:

这是解决您问题的有效方法:

<h:form id="form">
    <p:commandButton onstart="PF('progressBar').jq.show();" oncomplete="PF('progressBar').jq.hide();" />
    <p:progressBar widgetVar="progressBar" style="display: none;" />
</h:form>

简短说明:使用 PF('progressBar') 您将获得用于进度条的 PrimeFaces JavaScript 对象。使用 jq 您将获得进度条的 jQuery 元素。然后就可以使用 jQuery 方法显示和隐藏了。

【讨论】:

  • 仅此而已?谢谢,它的工作完美,而且它是一个简单的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-21
  • 1970-01-01
  • 1970-01-01
  • 2017-04-04
  • 2018-09-19
相关资源
最近更新 更多