我有一个简单的Vaadin应用程序,我在其中使用CDI注入。我的视图是使用CDIViewProvider和Vaadin-Navigation生成的,一切正常,即使我在视图中注入一个@ViewScoped bean(比如一个简单的ViewScoped Presenter或一个组件)。
但是在这种情况下,当我进行浏览器刷新时,会抛出错误:
com.vaadin.server.ServiceException: java.lang.IllegalStateException: Can't find proper view for @ViewScoped bean, no views are active for this ui.
at com.vaadin.server.VaadinService.handleExceptionDuringRequest(VaadinService.java:1464)
at com.vaadin.server.VaadinService.handleRequest(VaadinService.java:1421)
at com.vaadin.cdi.server.VaadinCDIServletService.handleRequest(VaadinCDIServletService.java:92)
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:364)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:668)
我目前不知道为什么,在我的想法中,导航到视图时应该初始化@ViewScoped bean(因为它适用于第一次导航到视图)。我错过了什么吗?当我将演示者更改为@SessionScoped时,它可以正常工作,但我希望在用户导航到另一个视图时销毁该bean。