我有一个服务,由一个 servlet 访问,它将用户重定向到登录屏幕。支持 bean 的范围目前正在从 @ConversationScoped 更改为 @FlowScoped,因为它更易于处理。
有没有一种方法可以直接从 servlet 中初始化面流,而无需通过隐式操作或 JSF 转发/重定向进行间接初始化?
我知道@FlowScope 是一个JSF (2.2) 范围,我想知道是否有一种方法可以扩展FacesServlet 或类似的东西。
作为一种解决方法,我目前只是添加了一个带有按钮的视图,这使得 JSF 向前进入流目录,但我试图避免这种情况。
更新
我尝试了许多方法来“自动”转发到流中,而无需单击任何按钮,但我总是得到一个No active contexts for scope type javax.faces.flow.FlowScoped
. 这是我的方法:
f:viewAction
<f:metadata> <f:viewAction action="myFlow" /> </f:metadata>
这似乎执行得太早了(无论如何)。
f:event
<f:event type="preRenderView" listener="#{myBean.forwardToMyFlow()}" />
bean 中的方法返回与 中相同的结果
f:viewAction
。导航案例
<navigation-rule> <from-view-id>/myView.xhtml</from-view-id> <navigation-case> <from-outcome>myFlow</from-outcome> <to-view-id>/myFlow/myFlow.xhtml</to-view-id> <redirect /> <to-flow-document-id /> </navigation-case> </navigation-rule>
我错过了什么?