1

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

我注意到 @ViewScoped 是 JSF 注释不起作用并且仍然表现为请求范围?

4

3 回答 3

1

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

于 2012-04-29T12:18:10.420 回答
0

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

于 2012-04-29T12:15:01.920 回答
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;
于 2015-08-12T01:09:16.393 回答