Java p:poll停止时将会话id作为参数传递
我使用Primefaces和p:poll是因为我想在条件实现后轮询停止时导航到另一个页面。在这两个页面上使用相同的对话bean。(事实上,有三个页面使用这个bean) 但我不知道在轮询停止时如何将对话Id作为参数传递,如果有链接或按钮,则传递的方式是这样的,因为f:param不能与p:poll一起使用 任何帮助都将不胜感激Java p:poll停止时将会话id作为参数传递,java,jsf,primefaces,Java,Jsf,Primefaces,我使用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 Websocketo:Websocket
尝试查看web套接字?我认为这两个问题可能会对您有所帮助:谢谢@fuggerjaki61和Jasper de Vries的回答。我已经设法在bean中出现条件时停止轮询。问题是我不知道如何将conversationId作为参数传递。我可以尝试flowscope选项。关于web套接字,我不熟悉它们。但是如果流式示波器不工作,我会检查它。您想用对话id
说什么?请参阅会话范围的Wizard@fuggerjaki61你说得对。我被他弄糊涂了。非常感谢。