我有一个服务,由servlet访问,它将用户重定向到登录屏幕.支持bean的范围目前正从@ConversationScoped更改为@FlowScoped,因为它更容易处理.
有没有办法直接从servlet中初始化faces流,没有通过隐式动作或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>
Run Code Online (Sandbox Code Playgroud)
这个似乎执行得太早(无论如何).
f:event
<f:event type="preRenderView" listener="#{myBean.forwardToMyFlow()}" />
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)我错过了什么?
我发现了以下关于Redis 中索引过期问题的问题(Spring Redis - 主条目过期后未删除索引)。
问题是 main 和:phantom条目过期并被正确删除,但相应的:idx条目在 Redis 中孤立存在。
提议的解决方案之一是启用 KeyspaceEvents,以便 Redis 在清理作业期间自动删除过期条目的索引。
不幸的是,这个解决方案不适用于我们的 Spring Boot 应用程序,因为我们在云环境中使用 Redis Enterprise 作为提供的服务,这不允许我们进行任何配置更改(CONFIG命令被禁用)。
这是我尝试过的:
@Configuration
@EnableRedisRepositories(enableKeyspaceEvents = RedisKeyValueAdapter.EnableKeyspaceEvents.ON_STARTUP)
public class RedisConfiguration {...}
Run Code Online (Sandbox Code Playgroud)
编辑:
我认为这适用于我本地的 Redis docker 映像,但我错了!在我们提供的 Redis (Enterprise) 服务上,甚至无法使用以下消息进行设置:
Caused by: redis.clients.jedis.exceptions.JedisDataException: ERR unknown command 'CONFIG'...
谁能给我一个关于如何删除索引的提示?
我们目前没有很多:idx条目,但它们必须/应该与:phantom条目一起删除,以避免保留任何“孤立”条目。
提前致谢。