我正在尝试新的“流程”功能。 它似乎非常有前途,因为它允许您拥有跨多个相关视图的托管bean。
不幸的是,它仅适用于帖子请求。
有没有办法使用获取请求输入流量?我发现的所有少数例子都使用了流程之外的起始形式。我想在Primefaces菜单栏中点击一个项目进行流程,据我所知,我只能在那里放一个链接...
然后假设用户在流的中间为页面添加书签。如果发送了对流中间的视图的get请求,并且该流不再处于活动状态(或者从查询字符串参数中删除了流信息),则服务器将以错误的错误页面进行响应。在这种情况下是否可以重定向到流的第一个节点?
在流的视图节点中导航我可以在查询字符串中看到一个特殊参数,它很可能是一个ID。是否有可能隐藏这些细节?
由于 菲利普
答案 0 :(得分:0)
是的,如果流程名为flow1,您可以编写如下内容:
<h:link value="Enter Flow" outcome="flow1"/>
就是这样。
关于导航,没有什么能以明确的方式处理它,但您可以覆盖FlowHandler实现,特别是方法clientWindowTransition(...),并检查该部分是否流是活动的并执行必要的操作。要从流外部导航下的流中退出,您可以覆盖ViewHandler.createView(...)方法并添加转换。
流状态绑定到客户端窗口ID,这是您作为查询参数看到的内容。这个细节是必要的,因为它提供了一种在导航中保持不变的状态,但它不像会话状态那么大,它包含多个窗口或标签。
我建议使用Apache MyFaces JSF 2.2 Implementation,因为那里的解决方案已考虑多个嵌套流等情况。它工作得很好。从Michael Kurz JSF Live blog on Github看一下这个JSF 2.2示例,这可能会有所帮助。