【问题标题】:PrimeFaces growl message from another user event来自另一个用户事件的 PrimeFaces 咆哮消息
【发布时间】:2012-08-28 04:52:04
【问题描述】:

我有两个用户:用户和管理员。当用户添加新记录时,如果管理员已登录,我想在管理员屏幕中显示咆哮消息。

有可能吗?如果是这样,我怎样才能做到这一点? JMS 是一种可能的解决方案吗?

【问题讨论】:

标签: jsf-2 primefaces


【解决方案1】:

您可以将私聊组件修改到您的案例中

http://www.primefaces.org/showcase-labs/push/chat.jsf

曾经,任何人都登录到您的系统。您将用户注册到系统。

public void login() {  
        RequestContext requestContext = RequestContext.getCurrentInstance();  

        if(users.contains(username)) {  
            loggedIn = false;  
            FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, "Username taken", "Try with another username."));  

            requestContext.update("growl");  
        }  
        else {  
            users.addUser(username);  
            pushContext.push(CHANNEL, username + " joined the channel.");  
            requestContext.execute("subscriber.connect('/" + username + "')");  
            loggedIn = true;  
        }  
    }

您可以通过发送推送通知向单个客户端发送消息。

public void sendPrivate() {  
        pushContext.push(CHANNEL + privateUser, "[PM] " + username + ": " + privateMessage);  

        privateMessage = null;  
    }  

然后处理即将到来的消息

<p:socket onMessage="handleMessage" channel="/chat" autoConnect="false" widgetVar="subscriber"/>  

<script type="text/javascript">  
    function handleMessage(data) {  
        var chatContent = $(PrimeFaces.escapeClientId('form:public'));  
        chatContent.append(data + '<br />');  

        //keep scroll  
        chatContent.scrollTop(chatContent.height());  
    }  
</script>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-25
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    • 2014-02-26
    • 1970-01-01
    相关资源
    最近更新 更多