首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PrimeFaces套接字是如何工作的?

PrimeFaces套接字是如何工作的?
EN

Stack Overflow用户
提问于 2013-03-13 16:35:57
回答 1查看 4.4K关注 0票数 0

我的代码:

代码语言:javascript
复制
<p:socket channel="/allposts/#{uview.user.uid}">
 <p:ajax event="message" async="true" listener="#{uview.go}" update="xout"/>
</p:socket>

#1. uview指的是视图范围内的bean。除了监听器方法之外,所有东西(包括update )都能工作。侦听器方法从未被调用。即使我将侦听器的值更改为不存在的方法,它也不会报告任何错误。知道为什么不能用吗?

在下面涉及动态id的代码片段中,我注意到了另一件事

代码语言:javascript
复制
<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的元素,它也找不到。这肯定不是命名容器引用的问题。

发生这种情况是因为在JSF呈现页面化部件之前就初始化了Primeface &这就是它找不到动态id的原因吗?

#2.正如我从Pimeface页面了解到的,在JSF中实现聊天应用程序需要用动态id更新元素。我在实现原始套接字的过程中出错了吗?还有其他方法来更优雅地实现它吗?

EN

回答 1

Stack Overflow用户

发布于 2014-01-16 21:18:11

uview指的是视图范围内的bean。除了监听器方法之外,所有东西(包括update )都能工作。侦听器方法从未被调用。即使我将侦听器的值更改为不存在的方法,它也不会报告任何错误。知道为什么不能用吗?

是个虫子。我找到了以下解决办法:下面的代码

代码语言:javascript
复制
<p:socket channel="/channel">
    <p:ajax event="message"
            listener="#{controller.yourListenerMethod}"
            update=":form:table" />
</p:socket>

代之以:

代码语言:javascript
复制
<p:socket onMessage="handleMessage" channel="/channel" />
<script type="text/javascript">
    function handleMessage(data) {
        updateWidgets();
    }
</script>

<p:remoteCommand name="updateWidgets"
                 actionListener="#{controller.yourListenerMethod}"
                 update=":form:table" />
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15391190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档