Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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
JSF:使用带有ICEfaces的AJAX推送(ICEpush)_Ajax_Jsf_Icefaces_Icepush - Fatal编程技术网

JSF:使用带有ICEfaces的AJAX推送(ICEpush)

JSF:使用带有ICEfaces的AJAX推送(ICEpush),ajax,jsf,icefaces,icepush,Ajax,Jsf,Icefaces,Icepush,我正在使用ICEfaces和ICEpush将一些数据推送到浏览器 但是,它并不像计划的那样工作:它不使用AJAX,它只是调用该操作并像其他任何非AJAX操作一样从该操作返回 我正在使用最新的ICEfaces和ICEpush版本以及Tomahawk 7和JSF 2 它既不适用于Servlet2.5,也不适用于Servlet3.0 以下是my bean的重要部分(视图范围): public AjaxTest(){ PushRenderer.addCurrentSession(PUSH_组); } p

我正在使用ICEfaces和ICEpush将一些数据推送到浏览器

但是,它并不像计划的那样工作:它不使用AJAX,它只是调用该操作并像其他任何非AJAX操作一样从该操作返回

我正在使用最新的ICEfaces和ICEpush版本以及Tomahawk 7和JSF 2

它既不适用于Servlet2.5,也不适用于Servlet3.0

以下是my bean的重要部分(视图范围):

public AjaxTest(){
PushRenderer.addCurrentSession(PUSH_组);
}
public void addText()引发InterruptedException{
对于(int i=0;i<5;i++){
行。添加(“行”+i);
PushRenderer.render(PUSH_组);
睡眠(1000);
}
}
这是我表格的一部分:

    <h:panelGroup>
        <h:dataTable id="ajaxTestTable" value="#{ajaxTest.lines}" var="line">
            <h:column>
                <h:outputText value="#{line}" />
            </h:column>
        </h:dataTable>
        <h:commandButton id="startAjax" value="Start"
            action="#{ajaxTest.addText}" />
    </h:panelGroup>


我错过什么了吗?谢谢

ICEfaces 2.0尚未与MyFaces集成。您是否使用附带的mojara.jar文件尝试过您的应用程序?

您是否有一些可以验证代码的开发工具?至少在Vaadin版本的ICEPush上,你不能相信他们的例子。在他们的官方演示中,有不推荐的代码,在他们的聊天中,他们给出了从另一个星球导入正确代码的代码


我的Eclipse告诉我,许多导入都是错误的,代码在某些函数上有不推荐使用的标记。那里的这些家伙发展如此之快,以至于他们的文件永远过时了。因此,请仔细阅读工具中关于代码的说明

我只熟悉Icefaces 1.8,但在我看来您的命令按钮并没有启用ajax。此外,您还必须使用actionListener而不是action

您可以使用icefaces命令按钮:

<ice:commandButton id="startAjax" value="Start" 
       actionListener="#{ajaxTest.addText}"/>

或者JSF 2 ajax标记:

<h:commandButton id="startAjax" value="Start">
    <f:ajax listener="#{ajaxTest.addText}"/>
</h:commandButton>

我还遇到了将IceFaces(使用push)与已经使用Richfaces的应用程序集成的问题。但是,可以直接将IcePush与几乎任何JavaWeb应用程序(使用ServletAPI)集成。 您可以查看有关的更多详细信息

其想法是使用IcePush提供的javascript api(或jQuery api)。因此,使用javascript api的页面将自己注册为一个侦听器以推送通知,在回调中,您可以调用任何javascript函数来更新页面。在Richfaces示例中,您可以使用ajaxUpdateFunction(),它实际上由
支持


在服务器端,您只需注册IcePush servlet,并使用javascript api在客户端初始化IcePush连接。

您的配置如何?你用的是哪一种?是否提供了所有必要的框架配置?你这里似乎有很多不同的。谢谢你花时间!它不适用于ICEfaces detault配置值。您指的是哪种其他配置?我没有配置任何异常的东西。也许这是我脸上的问题?我的想法快用完了(你在你的web.xml中映射了推送servlet了吗?这可能是原因吗?啊!太遗憾了!我现在能做什么?切换到Mojarra不是最好的选择,因为我正在扩展一个使用MyFaces的更大的应用程序,我不能只切换。那么我可以使用一个旧的ICEfaces版本来使用ICEpush和MyFaces吗?如果可以,哪些版本?总之,感谢c。)正在学习,特德!特德刚刚在你上面的帖子中澄清了。这对我的脸不起作用。:(谢谢你花时间!
<h:commandButton id="startAjax" value="Start">
    <f:ajax listener="#{ajaxTest.addText}"/>
</h:commandButton>