用户之间共享JSF/Spring Session

kga*_*ron 3 session jsf spring

我有一个JSF管理的会话scopped bean.它也是一个弹簧组件,因此我可以注入一些字段:

import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.springframework.stereotype.Component;

@ManagedBean
@SessionScoped
@Component
public class EpgBean {...}
Run Code Online (Sandbox Code Playgroud)

问题是会话在用户之间共享!如果用户做了一些事情并且另一台计算机的另一个用户连接,他会看到另一个用户的SessionScoped数据.

是因为spring @Component会强制bean成为单例吗?这件事的正确方法是什么?

kga*_*ron 5

我使用spring scope annotation @Scope("session"而不是JSF 解决了这个问题@SessionScopped.我想因为spring被配置为FacesEl解析器,所以弹簧范围很重要,而忽略了JSF范围.