Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何通过处理来自cometd channle的消息cumming来更新JSF2H:datatable_Javascript_Jsf 2_Cometd - Fatal编程技术网

Javascript 如何通过处理来自cometd channle的消息cumming来更新JSF2H:datatable

Javascript 如何通过处理来自cometd channle的消息cumming来更新JSF2H:datatable,javascript,jsf-2,cometd,Javascript,Jsf 2,Cometd,我实际上连接到一个cometd频道,它从服务器端推送消息 我需要使用此消息更新我的h:datatable ------------xhtml--------------------------- <script type="text/javascript"> var map = new Object(); // or var map = {}; function getStatus(k) { return map[k]; } $(docu

我实际上连接到一个cometd频道,它从服务器端推送消息

我需要使用此消息更新我的h:datatable

------------xhtml---------------------------

 <script type="text/javascript">
        var map = new Object(); // or var map = {};


function getStatus(k) {
    return map[k];
}
        $(document).ready (function() {
         console.log("**** connect *****");
        cometd.handshake(isConnected);
        });
    function isConnected(handshakeReply){
        if (handshakeReply.successful){
            console.log("*** client connected ***");        
            cometd.subscribe('/user', handleMsg,isSubscribed); 

        }else{
            console.log("Connection Fail ");
        }
    }

    function isSubscribed(subscribeReply){
        if (subscribeReply.successful){
            console.log("***client subscribed ***");        
            return true;
        }
        return false;
    }   
    function handlenMsg(message){
            console.log(message.data); 
            map=message.data;
    }

</script>

    <h:form>
            <h:dataTable value="#{bean.orders}" var="o" 
                styleClass="table1" 
            >
                <h:column>              
                <f:facet name="header">
                    <h:outputText id="Label" value="name" />
                </f:facet>
                <h:outputText id="nameOutput" value="#{o.name}">        
                </h:column>

                <h:column>
                <f:facet name="header">
                    <h:outputText id="amountLabel" value="quantity" />
                </f:facet>
                <h:outputText id="amountOutput" value="#{o.quantity}">

                </h:outputText>                 
                </h:column>

                <h:column>
                    <f:facet name="header">
                    <h:outputText id="statusLabel" value="status" />
                    </f:facet>
                    <h:graphicImage library="images" name="ajax-loader.gif"/>
                    <h:outputText id="statusOutput" value="getStatus('key1'))" />
                </h:column>

            </h:dataTable>
<h:commandButton type="submit" id="button"

                value="submit"
                action="#{bean.doAction}"
                />

var map=新对象();//或var-map={};
函数getStatus(k){
返回映射[k];
}
$(文档).ready(函数(){
console.log(“*****connect*****”);
cometd.握手(断开连接);
});
功能已连接(握手重新开始){
if(握手成功){
console.log(“***客户端已连接***”);
cometd.subscribe('/user',handleMsg,isSubscribed);
}否则{
控制台日志(“连接失败”);
}
}
功能已订阅(SubscriberReply){
if(subscribeReply.successful){
console.log(“***客户端订阅***”);
返回true;
}
返回false;
}   
函数handlenMsg(消息){
console.log(message.data);
map=message.data;
}
---------------------------豆子------------------

 <script type="text/javascript">
        var map = new Object(); // or var map = {};


function getStatus(k) {
    return map[k];
}
        $(document).ready (function() {
         console.log("**** connect *****");
        cometd.handshake(isConnected);
        });
    function isConnected(handshakeReply){
        if (handshakeReply.successful){
            console.log("*** client connected ***");        
            cometd.subscribe('/user', handleMsg,isSubscribed); 

        }else{
            console.log("Connection Fail ");
        }
    }

    function isSubscribed(subscribeReply){
        if (subscribeReply.successful){
            console.log("***client subscribed ***");        
            return true;
        }
        return false;
    }   
    function handlenMsg(message){
            console.log(message.data); 
            map=message.data;
    }

</script>

    <h:form>
            <h:dataTable value="#{bean.orders}" var="o" 
                styleClass="table1" 
            >
                <h:column>              
                <f:facet name="header">
                    <h:outputText id="Label" value="name" />
                </f:facet>
                <h:outputText id="nameOutput" value="#{o.name}">        
                </h:column>

                <h:column>
                <f:facet name="header">
                    <h:outputText id="amountLabel" value="quantity" />
                </f:facet>
                <h:outputText id="amountOutput" value="#{o.quantity}">

                </h:outputText>                 
                </h:column>

                <h:column>
                    <f:facet name="header">
                    <h:outputText id="statusLabel" value="status" />
                    </f:facet>
                    <h:graphicImage library="images" name="ajax-loader.gif"/>
                    <h:outputText id="statusOutput" value="getStatus('key1'))" />
                </h:column>

            </h:dataTable>
<h:commandButton type="submit" id="button"

                value="submit"
                action="#{bean.doAction}"
                />
公共类Bean{
列出订单;
公共豆()
{
orders=新的ArrayList();
订单o=新订单();
o、 设置名称(“键1”);
o、 数量(“10”);
订单。添加(o)
o=新订单();
o、 设置名称(“键2”);
o、 数量(“20”);
订单。添加(o)
}
公共无效操作(列出订单){
字符串channelName=“/user”;
MarkedReference ref=bayeuxServer.createChannelIfAbsent(channelName,new ServerChannel.Initializer()){
公用void配置通道(ConfigurableServerChannel){
channel.setPersistent(true);
}
});
ServerChannel=ref.getReference();
字符串publishMesg=“”;
订单;
映射数据=新HashMap(
订单。大小();
对于(int i=0;i
我不清楚您想做什么。带有CometD的服务器端Java代码看起来不错。JSF代码在服务器端呈现,因此调用
getStatus()
无法引用JavaScript函数。为了在服务器端呈现JSF表,您需要使用要显示的值更新服务器上的一些模型bean。
doAction()
的实现只会动态创建发布的对象。