首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >FacesContext在JoinFaces ViewScope中没有发现

FacesContext在JoinFaces ViewScope中没有发现
EN

Stack Overflow用户
提问于 2018-09-28 07:49:51
回答 1查看 792关注 0票数 2

我们目前正在使用用于JSF支持的JavaEE 3.2.5将一个相当大的项目从JoinFaces (野生蝇)迁移到SpringBoot2.0.5。不幸的是,在启动服务器时,我们总是收到以下消息:

范围'view‘对于当前线程是不活动的;如果您打算从单个实例引用该bean,请考虑为它定义一个作用域代理;嵌套的例外是java.lang.IllegalStateException: No FacesContext。

有问题的UI是一个附加了javax.faces.view.ViewScoped注释的Spring组件(就像连接面中的类StarterMBean -maven-jar-示例)。

有什么特别的东西,我们必须小心,例如,禁止依赖,特殊配置等?

我们感谢每一个提示!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-10-13 22:07:42

您有一个单例/应用程序作用域bean,它直接或间接依赖于视图作用域bean。这迫使BeanFactory在应用程序启动时构造视图作用域bean,但是视图作用域bean只能在当前处理JSF请求的线程中使用。

解决这个问题有多种方法:

  1. 尝试将bean建模为只对具有相同或更高作用域的bean具有依赖关系。(因此,应用程序作用域bean只能使用应用程序作用域bean,视图作用域bean可以使用视图、会话或应用程序作用域bean等等)
  2. 当您100%确定您的应用程序作用域bean将仅在JSF请求处理期间使用视图作用域bean时,您可以自动或手动地将bean包装在一个作用域代理中。
    • 要自动获得范围内的代理,请将@ViewScoped更改为@Scope(scopeName = "view", proxyMode = ScopedProxyMode.TARGET_CLASS)
    • 如果您无法访问视图作用域bean,则可以将注入点声明为ObjectProvider<>,以便获得一个作用域代理。

有关这个问题的更多信息可以在这里找到:https://docs.spring.io/spring-framework/docs/current/spring-framework-reference/core.html#beans-factory-scopes-other-injection

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52550747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档