0

我正在使用 Spring 3.1 JSF 2.2。

使用 JSF 2.2 引入的 ViewScoped 注释 Bean 不起作用。

@javax.inject.Named
@javax.faces.view.ViewScoped
public class TestBean {
    @PostConstruct
    public void init(){sysout("Why spring invoke this when initializing context :-( ");}
}

在我的 applicationContext.xml 中有一个注释组件扫描标记

<context:component-scan base-package="com.test"/> 

Spring 3.1 检测并处理 CDI 注释,但 @javax.faces.view.ViewScoped 不起作用。我知道通过创建自己的 ViewScoped 实现还有另一种解决方案,但我想知道为什么 @javax.faces.view.ViewScoped 不起作用

4

3 回答 3

4

最好的解决方案是删除 spring 并使用 CDI 的 Java EE 实现

于 2013-10-05T14:19:00.653 回答
-1

您应该注意到 JSF 注释对 Spring bean 也不起作用,因为 JSF bean 位于不同的上下文中。

但是视图范围的实现非常简单。我创建了一个工件来解决这个问题。

请参阅我的 github javaplugs/spring-jsf存储库。

于 2015-04-20T11:22:55.627 回答
-2

javax.faces.view.ViewScoped 仅适用于 JSF 托管 Bean,不适用于 CDI。

如果您希望使用 View 范围而不是 javax.inject.Named 具有正确的行为,请使用 javax.faces.bean.ManagedBean 注释。

问候

于 2013-08-12T13:13:09.720 回答