作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个常规的 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。要使用它:
在你的backing bean中定义一个方法,你将在其中使用RequestContext
对象
public void doJs() {
RequestContext ctx = RequestContext.getCurrentInstance();
context.execute("progress.cancel();");
}
在listener
中设置此方法<p:ajax/>
的属性
<p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true"
widgetVar="progress">
<p:ajax event="complete" listener="#{theBean.doJs}"/>
</p:progressBar>
编辑:要在每次 ajax 更新后执行,设置有点不同:
添加interval
归因于您的进度条以引入更好的受控轮询机制
<p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true"
widgetVar="progress" interval="3000">
添加 <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/
我是一名优秀的程序员,十分优秀!