Spring管理的JSF bean

时间:2012-04-29 12:06:27

标签: spring jsf managed-bean

我正在使用Spring托管的JSF bean,现在我必须使用注释标签Ex。@ scope of spring或JSF?

我注意到@ViewScoped是JSF注释无法正常工作并仍然表现为请求范围?

3 个答案:

答案 0 :(得分:1)

如果您使用org.springframework.web.jsf.el.SpringBeanFacesELResolver进行Spring + JSF集成,则需要使用org.springframework.context.annotation.Scope注释标记范围。

答案 1 :(得分:0)

Spring中没有View范围,但我们可以自定义实现这样的范围。参考thisthis

答案 2 :(得分:0)

阅读本文:本文中的信息:http://www.beyondjava.net/blog/integrate-jsf-2-spring-3-nicely/

我这样做了:

为JSF支持bean定义一个抽象超类,如下所示:

public abstract class AutowireableManagedBean {

    protected Logger logger = LoggerFactory.getLogger(getClass());

    protected AutowireCapableBeanFactory ctx;

    @PostConstruct
    protected void init() {
        logger.debug("init");
        ctx = WebApplicationContextUtils
                .getWebApplicationContext(
                        (ServletContext) FacesContext.getCurrentInstance()
                                .getExternalContext().getContext())
                .getAutowireCapableBeanFactory();
        // The following line does the magic
        ctx.autowireBean(this);
    }
   ...
}

然后,让你的支持bean扩展该超类,你将能够自动装配Spring bean并使用特定于JSF的视图范围:

@ManagedBean
@ViewScoped
public class MyBackingBean extends AutowireableManagedBean {

    @Autowired
    private MyDao myDao;