Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.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
Java p:poll停止时将会话id作为参数传递_Java_Jsf_Primefaces - Fatal编程技术网

Java p:poll停止时将会话id作为参数传递

Java p:poll停止时将会话id作为参数传递,java,jsf,primefaces,Java,Jsf,Primefaces,我使用Primefaces和p:poll是因为我想在条件实现后轮询停止时导航到另一个页面。在这两个页面上使用相同的对话bean。(事实上,有三个页面使用这个bean) 但我不知道在轮询停止时如何将对话Id作为参数传递,如果有链接或按钮,则传递的方式是这样的,因为f:param不能与p:poll一起使用 任何帮助都将不胜感激 提前谢谢。我想你有两个问题: 如何制作多页向导 如何检查任务(搜索)是否完成 如何制作多页向导? 我认为这不是你的主要问题,你已经找到了解决办法。这只是为了完整性 你可以用

我使用Primefaces和p:poll是因为我想在条件实现后轮询停止时导航到另一个页面。在这两个页面上使用相同的对话bean。(事实上,有三个页面使用这个bean)

但我不知道在轮询停止时如何将对话Id作为参数传递,如果有链接或按钮,则传递的方式是这样的,因为f:param不能与p:poll一起使用

任何帮助都将不胜感激


提前谢谢。

我想你有两个问题:

  • 如何制作多页向导
  • 如何检查任务(搜索)是否完成

  • 如何制作多页向导? 我认为这不是你的主要问题,你已经找到了解决办法。这只是为了完整性

    你可以用a或a(我会用这个)


    如何检查任务(搜索)是否完成? 为此,您还得到了一个类似于的解决方案

    但是正如@Jasper_de_Vries在评论中所说的那样,a比a有更好的表现


    下面是我对第二个问题的解决方案:

    演示XHTML文件:

    
    
    还有你的豆子:

    @Named
    @会话范围
    公开课演示{
    @注入
    私人服务;
    @注入@Push
    private PushContext demo;//变量名必须与通道名匹配
    私有结果结果;//getter+setter
    //会话实用程序等。
    私有void sendMessage(){
    demo.send(“complete”);//这就是全部的魔力
    }
    公共任务(){
    service.task(/*参数*/,结果->{
    //这在接受回调时运行
    this.result=结果;
    sendMessage();
    });
    }
    }
    
    某些服务:

    @Stateless/@Stateful
    public class SomeServiceService {
    
        @Asynchronous
        public void startLongTask(/* parameters*/, Consumer<Result> callback) {
            // very long task ...
    
            callback.accept(result);
        }
    }
    
    @Stateless/@Stateful
    公共类服务{
    @异步的
    公共任务(/*参数*/,使用者回调){
    //很长的任务。。。
    接受(结果);
    }
    }
    

    基本上,当用户单击按钮时,长任务(例如搜索)就会启动。当服务完成时,它将调用回调并更新UI


    f:websocket
    是JSF2.3的一个特性。如果您没有使用JSF 2.3,请查看Omnifaces Websocket
    o:Websocket

    尝试查看web套接字?我认为这两个问题可能会对您有所帮助:谢谢@fuggerjaki61和Jasper de Vries的回答。我已经设法在bean中出现条件时停止轮询。问题是我不知道如何将conversationId作为参数传递。我可以尝试flowscope选项。关于web套接字,我不熟悉它们。但是如果流式示波器不工作,我会检查它。您想用
    对话id
    说什么?请参阅会话范围的
    Wizard@fuggerjaki61你说得对。我被他弄糊涂了。非常感谢。