gpt4 book ai didi

jsf - 如何为 Primefaces progressBar 实现更新处理程序?

转载 作者:行者123 更新时间:2023-12-04 16:07:39 25 4
gpt4 key购买 nike

我有一个常规的 Ajax PF 进度条:

        <p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true" widgetVar="progress">
<p:ajax event="complete" oncomplete="progress.cancel();"></p:ajax>
</p:progressBar>

当 progressBar 更新了它的值时,我如何运行我的 JavaScript 代码?

最佳答案

使用 RequestContext 对象从服务器端执行 javascript。要使用它:

  1. 在你的backing bean中定义一个方法,你将在其中使用RequestContext对象

    public void doJs() {
    RequestContext ctx = RequestContext.getCurrentInstance();
    context.execute("progress.cancel();");
    }
  2. listener中设置此方法<p:ajax/> 的属性

    <p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true"
    widgetVar="progress">
    <p:ajax event="complete" listener="#{theBean.doJs}"/>
    </p:progressBar>

编辑:要在每次 ajax 更新后执行,设置有点不同:

  1. 添加interval归因于您的进度条以引入更好的受控轮询机制

    <p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true"
    widgetVar="progress" interval="3000">
  2. 添加 <f:event/> Hook 到组件的页面生命周期并从那里执行服务器端更新。我要推荐PostValidateEvent事件

    <p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true"
    widgetVar="progress" interval="3000">
    <f:event type="postValidate" listener="#{theBean.doJs}" />
    </p:progressBar>

关于jsf - 如何为 Primefaces progressBar 实现更新处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16865906/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com