我在WebSphere Portal 7上使用PF Push(PF 5.3)时遇到了问题,因此我尝试使用PF 4进行推送。我使用文档中的计数器示例进行测试。
的web.xml
<servlet>
<servlet-name>Push Servlet</servlet-name>
<servlet-class>org.primefaces.push.PushServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Push Servlet</servlet-name>
<url-pattern>/primepush/*</url-pattern>
</servlet-mapping>
bean(应用程序范围):
private int count;
public void setCount(int count) {
this.count = count;
}
public int getCount() {
return count;
}
public synchronized void increment() {
count++;
PushContext pushContext = PushContextFactory.getDefault().getPushContext();
pushContext.push("/counter", String.valueOf(count));
}
首先,我尝试使用JS代码更新计数器并且它有效:
<h:form>
<h:outputText id="counter" value="#{bean.count}" styleClass="display" />
<p:commandButton value="Click" actionListener="#{bean.increment}" />
</h:form>
<p:socket channel="/counter" onMessage="handleMessage" />
<script type="text/javascript">
function handleMessage(data) {
$('.display').html(data);
}
</script>
上面的示例工作正常,但如果我尝试使用ajax更新计数器:
<p:socket channel="/counter" >
<p:ajax event="message" update="@(.display)" />
</p:socket>
计数器未更新。在门户网站(WAS 8)控制台中没有错误/异常,在Chrome中也看起来不错。只有Firefox和IE显示错误消息,但我不确定它们的含义。
在FF控制台中,当我点击&#39; counter:2:1&#39;链接,显示推送数据,如:
12|{"data":"4"}
这甚至是正确的响应格式吗?
PS:使用WebSphere Portal 7(WAS 8),PF 4.0,Atmosphere runtime 2.0.1