Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javax.faces.view.viewscope与CDI Springbean和JSF结合使用_Spring_Jsf_Jsf 2_Cdi_Jsf 2.2 - Fatal编程技术网

将javax.faces.view.viewscope与CDI Springbean和JSF结合使用

将javax.faces.view.viewscope与CDI Springbean和JSF结合使用,spring,jsf,jsf-2,cdi,jsf-2.2,Spring,Jsf,Jsf 2,Cdi,Jsf 2.2,我使用的是Spring3.1JSF2.2 使用JSF2.2引入的ViewScope注释Bean不起作用 @javax.inject.Named @javax.faces.view.ViewScoped public class TestBean { @PostConstruct public void init(){sysout("Why spring invoke this when initializing context :-( ");} } 在my applicatio

我使用的是Spring3.1JSF2.2

使用JSF2.2引入的ViewScope注释Bean不起作用

@javax.inject.Named
@javax.faces.view.ViewScoped
public class TestBean {
    @PostConstruct
    public void init(){sysout("Why spring invoke this when initializing context :-( ");}
}
在my applicationContext.xml中,有一个注释组件扫描标记

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


Spring3.1检测并处理CDI注释,但@javax.faces.view.ViewScoped不起作用。通过创建我自己的ViewScope实现,我知道这一点,但我想知道为什么@javax.faces.view.ViewScoped不起作用

javax.faces.view.ViewScoped只适用于JSF托管Bean,而不适用于CDI

如果希望在视图范围内而不是在javax.inject.Named中有正确的行为,请使用javax.faces.bean.ManagedBean注释


关于

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

您应该注意,JSF注释对SpringBean不起作用,因为JSFBean位于不同的上下文中

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


查看我的github存储库。

为什么您认为spring调用
@PostConstruct
?此代码中未使用Spring。请详细解释一下你的问题。需要一个。您将
javax.faces.view.ViewScoped
javax.faces.bean.ViewScoped
混淆。也许您还需要赶上JSF2.2的新特性?