带有 blockUI 的实时进度条无法使用带有气氛的 primefaces
Real Time Progress bar with a blockUI doesn't work using primefaces with atmosphere
我有一个按钮,当我按下它时,该方法从数据库中获取数据并将记录显示在数据表中。动作超过1分钟,我想显示进度条(时间可变)
我在这个页面找到了解决方案:Show a real time progress bar in a Html User Dialog
问题是我显示了进度条,但始终是“0%”。在java脚本函数中永远不要输入。而且我不知道我做错了什么。
这是我的 XHTML:
<h:form id="formAllocate">
<p:panel id="panel" header="Realtime ProgressBar">
<p:commandButton id="btn" value="Start"
actionListener="#{scheduleMB.startLongRunningProcess}">
</p:commandButton>
</p:panel>
<p:blockUI block="panel" trigger="btn">
<p:progressBar widgetVar="progressBar" style="width:300px"
labelTemplate="{value}%">
</p:progressBar>
<span id="msg"></span>
</p:blockUI>
</h:form>
<p:socket channel="/realtime" onMessage="handleProgress"></p:socket>
<script type="text/javascript">
function handleProgress(progressJson) {
alert('begin');
var progressData = eval("(" + progressJson + ")");
progressBar.setValue(progressData.progress);
$("#msg").text(progressData.msg);
}
</script>
这是我的 Bean:
public void startLongRunningProcess(){
EventBus eventBus = EventBusFactory.getDefault().eventBus();
eventBus.publish("/realtime", "{ 'progress' : 10, 'msg' : 'Extract data'}");
list =
getAuxService().findList(userSelected, initDate2,
endDate2);
}
在web.xml中:
<!-- Primefaces PUSH -->
<servlet>
<servlet-name>Push Servlet</servlet-name>
<servlet-class>org.primefaces.push.PushServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>Push Servlet</servlet-name>
<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
在我的 pom.xml 中,我有以下依赖项:
<dependency>
<groupId>org.atmosphere</groupId>
<artifactId>atmosphere-runtime</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.roboguice</groupId>
<artifactId>roboguice</artifactId>
<version>2.0</version>
</dependency>
我正在使用 primefaces 5.1、spring 3.2.5、hibernate 4.2.7、java 1.7、primefaces 扩展 3.0.0
我哪里做错了???
感谢您的帮助和回答。
可以在 PrimeFaces 论坛
的(重复)post 中找到(我的)答案
总结:
- @PushEndpoint 丢失
- 未遵循 4.0 到 5.0 迁移指南访问 PF 小部件 (widgetName -> PF('widgetName))
- OP不知道每次都发布一个事件来设置进度条的增量
我有一个按钮,当我按下它时,该方法从数据库中获取数据并将记录显示在数据表中。动作超过1分钟,我想显示进度条(时间可变)
我在这个页面找到了解决方案:Show a real time progress bar in a Html User Dialog
问题是我显示了进度条,但始终是“0%”。在java脚本函数中永远不要输入。而且我不知道我做错了什么。
这是我的 XHTML:
<h:form id="formAllocate">
<p:panel id="panel" header="Realtime ProgressBar">
<p:commandButton id="btn" value="Start"
actionListener="#{scheduleMB.startLongRunningProcess}">
</p:commandButton>
</p:panel>
<p:blockUI block="panel" trigger="btn">
<p:progressBar widgetVar="progressBar" style="width:300px"
labelTemplate="{value}%">
</p:progressBar>
<span id="msg"></span>
</p:blockUI>
</h:form>
<p:socket channel="/realtime" onMessage="handleProgress"></p:socket>
<script type="text/javascript">
function handleProgress(progressJson) {
alert('begin');
var progressData = eval("(" + progressJson + ")");
progressBar.setValue(progressData.progress);
$("#msg").text(progressData.msg);
}
</script>
这是我的 Bean:
public void startLongRunningProcess(){
EventBus eventBus = EventBusFactory.getDefault().eventBus();
eventBus.publish("/realtime", "{ 'progress' : 10, 'msg' : 'Extract data'}");
list =
getAuxService().findList(userSelected, initDate2,
endDate2);
}
在web.xml中:
<!-- Primefaces PUSH -->
<servlet>
<servlet-name>Push Servlet</servlet-name>
<servlet-class>org.primefaces.push.PushServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>Push Servlet</servlet-name>
<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
在我的 pom.xml 中,我有以下依赖项:
<dependency>
<groupId>org.atmosphere</groupId>
<artifactId>atmosphere-runtime</artifactId>
<version>2.2.2</version>
</dependency>
<dependency>
<groupId>org.roboguice</groupId>
<artifactId>roboguice</artifactId>
<version>2.0</version>
</dependency>
我正在使用 primefaces 5.1、spring 3.2.5、hibernate 4.2.7、java 1.7、primefaces 扩展 3.0.0
我哪里做错了???
感谢您的帮助和回答。
可以在 PrimeFaces 论坛
的(重复)post 中找到(我的)答案总结:
- @PushEndpoint 丢失
- 未遵循 4.0 到 5.0 迁移指南访问 PF 小部件 (widgetName -> PF('widgetName))
- OP不知道每次都发布一个事件来设置进度条的增量