我在应用程序作用域bean中有一个变量。用户可以通过方法调用触发此变量的更新。现在问题在于刷新jsf页面后用户没有得到这个变量的更新视图。如果已测试变量是否已正确更新且已更新,则更新方法可正常工作。应用程序作用域bean中的变量是否声明为final或此处存在什么问题?应用程序作用域bean的视图没有更新
回答
如果您使用了注释的错误组合,就会发生这种情况。例如。
import javax.enterprise.context.ApplicationScoped;
import javax.faces.bean.ManagedBean;
@ManagedBean
@ApplicationScoped
public class App {}
这里,范围注释来自CDI,而bean管理注释来自JSF。 JSF不识别CDI范围注释,因此默认为@NoneScoped
。即在每个单独的EL #{app}
评估中重新构建豆。这解释了你所看到的症状。
您需要将范围注释修复为来自JSF。
import javax.faces.bean.ApplicationScoped;
import javax.faces.bean.ManagedBean;
@ManagedBean
@ApplicationScoped
public class App {}
的CDI范围的注解只能结合使用与CDI豆管理注释@Named
。
嗯,不,我正在使用正确的导入(都来自javax.faces),我用@Inject在EJB中注入了应用程序范围的bean ... – nico1510
这真的很奇怪..我做了一些调试:bean的一个实例是在jsf页面的第一次请求时创建的。第二个实例是在创建使用应用程序范围的bean的EJB时创建的。在此之后,每当创建一个新的EJB实例时,就会使用应用程序作用域bean的相同(第二个)实例。但用户总是只能看到首先创建的应用程序范围的bean,因此没有视图更新... – nico1510
您无法使用'@Inject'注入JSF托管的bean。用CDI管理的bean替换它。 – BalusC
- 1. 刷新/重新加载应用程序作用域管理bean
- 2. 将请求作用域bean自动装入应用程序作用域bean
- 3. UWP应用程序未更新视图
- 4. 应用程序图标没有刷新
- 5. 没有控制器和视图的新rails应用程序
- 6. 有没有办法让bean线程作用域?
- 7. 从应用程序范围内遗传“事件作用域”bean
- 8. 访问应用程序作用域bean导致NullPointerException
- 9. $ rootScope事件和Promise后的作用域更新没有反映在视图中
- 10. 应用程序图标更新后不更改应用程序
- 11. Xcode:iPhone 5应用程序启动图像没有更新
- 12. 对没有更新的应用程序进行更改
- 13. 不同线程上的应用程序域自我更新应用程序
- 14. 视图从应用程序不更新/刷新
- 15. FragmentPager没有更新视图
- 16. 更新现有的ASPX应用程序没有成功
- 17. 制作单一视图应用程序到表格视图应用程序
- 18. 没有回调工作与我的新通用应用程序
- 19. UWP新应用程序视图
- 20. 打开新视图iOS应用程序
- 21. 对现有应用程序的更新
- 22. 更新现有的应用程序
- 23. 更新现有的iPhone应用程序
- 24. 使用视图作用域bean进行数据交换
- 25. 春季mvc应用程序中使用bean作用域的最佳实践
- 26. 更新后应用程序图标更改为android图标应用程序
- 27. 在指令中作用域更改时视图不会更新
- 28. 有没有办法让视图组件(由JS编写)更新在反应原生的Android应用程序?
- 29. 网页视图在Android应用程序没有响应
- 30. node.js应用程序没有使用iisnode自动更新
显然它不是同一个实例。您需要运行一个调试器或至少显示一个SSCCE,以便我们可以看到并指出您的错误。 – BalusC
是的你是对的。我认为应用程序范围的bean只实例化了一次。所以如果不是这种情况,只有一个实例的唯一方法是在方法签名中传递它?在这种情况下,我认为我更喜欢Singleton Bean – nico1510
显然你使用了错误的注释。我发布了一个答案。 – BalusC