我的代码:
<p:socket channel="/allposts/#{uview.user.uid}">
<p:ajax event="message" async="true" listener="#{uview.go}" update="xout"/>
</p:socket>
#1。uview 指的是视图范围的 bean。一切,包括更新,除了侦听器方法外都有效。永远不会调用侦听器方法。即使我将侦听器的值更改为不存在的方法,它也不会报告任何错误。知道为什么它不起作用吗?
我在以下代码片段中注意到的另一件事[涉及动态 id]:
<p:socket channel="/allposts/#{uview.user.uid}">
<p:ajax event="message" async="true" listener="#{uview.go}" update="#{uview.user.uid}"/>
</p:socket>
在这里,它报告错误,指出找不到具有指定 id 的 id [显示错误消息中的 id]。即使有一个具有该 id 的元素,它也无法找到它。这当然不是命名容器引用的问题。
发生这种情况是因为 Primeface 套接字甚至在 JSF 呈现页面 [动态部分] 之前就已初始化,这就是它找不到动态 id 的原因???
#2。正如我从 Pimeface Demo page 中了解到的,在 JSF 中实现聊天应用程序需要使用动态 id 更新元素。我在实现primeface套接字时会出错吗?还有其他方法可以更优雅地实现它吗?