roo*_*kit 3 jsf primefaces jsf-2
我有一个常规的Ajax PF progressBar:
<p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true" widgetVar="progress">
<p:ajax event="complete" oncomplete="progress.cancel();"></p:ajax>
</p:progressBar>
Run Code Online (Sandbox Code Playgroud)
每当progressBar更新它的值时,如何运行我的JavaScript代码?
使用该RequestContext对象从服务器端执行javascript.要使用它:
在您的辅助bean中定义一个方法,您将在该方法中使用该RequestContext对象
public void doJs() {
RequestContext ctx = RequestContext.getCurrentInstance();
context.execute("progress.cancel();");
}
Run Code Online (Sandbox Code Playgroud)在该listener属性中设置此方法<p:ajax/>
<p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true"
widgetVar="progress">
<p:ajax event="complete" listener="#{theBean.doJs}"/>
</p:progressBar>
Run Code Online (Sandbox Code Playgroud)编辑:要在每次ajax更新后执行执行,设置有点不同:
将interval属性添加到进度条以引入更好的受控轮询机制
<p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true"
widgetVar="progress" interval="3000">
Run Code Online (Sandbox Code Playgroud)<f:event/>在组件的页面生命周期中添加一个钩子,并从那里执行服务器端更新.我打算推荐这个PostValidateEvent活动
<p:progressBar value="#{myTask.progress}" labelTemplate="{value}%" ajax="true"
widgetVar="progress" interval="3000">
<f:event type="postValidate" listener="#{theBean.doJs}" />
</p:progressBar>
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
3400 次 |
| 最近记录: |