我正在使用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不起作用。我知道有another solution创建我自己的ViewScoped实现,但我想知道为什么@ javax.faces.view.ViewScoped不起作用
答案 0 :(得分:4)
最佳解决方案是删除spring并使用CDI的Java EE实现
答案 1 :(得分:-1)
您应该注意到JSF注释对Spring bean也不起作用,因为JSF bean位于不同的上下文中。
但是视图范围实现非常简单。我已经创建了一个工件来解决这个问题。
请参阅我的github javaplugs/spring-jsf存储库。
答案 2 :(得分:-2)
javax.faces.view.ViewScoped仅适用于JSF Managed Bean而不适用于CDI。
如果希望使用View范围而不是javax.inject.Named获得正确的行为,请使用javax.faces.bean.ManagedBean批注。
此致