1

SessionListener我想设置一些我想在 JSF@ManagedBeanSession scope显示的值。

4

1 回答 1

3

您需要自己创建托管 bean 实例。

Bean bean = new Bean();
bean.setSomething(something);
event.getSession().setAttribute("bean", bean); // "bean" is managed bean name.

如果它已经存在于会话范围中,JSF 只会重用它(您会看到,JSF“会话范围”在 的属性所代表的范围内HttpSession)。请注意,这种方式 any@PostConstruct不会被调用,并且任何需要由@ManagedProperty,@EJB等注入的依赖项都不会被注入。你也需要自己做。

从设计技术上讲,更好的做法是仅在@PostConstruct支持 bean 类本身的构造函数或方法中执行这项工作。

@ManagedBean
@SessionScoped
public class Bean {

    @PostConstruct
    public void init() {
        // Here.
    }

}
于 2012-07-02T13:53:45.177 回答