当会话未锁定时,无法从父级中删除

Ahm*_*emi 2 spring vaadin vaadin7

当我用2个会话测试我的应用程序时,在一个浏览器中所有的东西都可以,而在另一个浏览器中我得到了异常

@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
@PreserveOnRefresh
@SpringComponent
public class TestUI extends UI {

    @Autowired
    MainLayout content;

    @Autowired
    DetailView detailView;

    @Override
    protected void init(VaadinRequest request) {
        VaadinSession.setCurrent(VaadinSession.getCurrent());
        Navigator navigator = new Navigator(this, detailView);
        navigator.addView("tests", TestView.class);
        setContent(content);
    }
}
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

java.lang.IllegalStateException:未锁定会话时无法从父项中删除.此外,还有另一个锁定会话,表示该组件可能即将从一个会话移动到另一个会话.at com.vaadin.ui.AbstractSingleComponentContainer.removeFromParent(AbstractSingleComponentContainer.java:175)at com.vaadin.ui.AbstractSingleComponentContainer.setContent(AbstractSingleComponentContainer.java:148)at com.vaadin.ui.UI.setContent(UI.java:1312) )

Hen*_*ola 5

将Vaadin组件定义为Spring托管bean时,必须始终为这些组件定义非单一范围.例如:

@Component
@Scope(BeanDefinition.SCOPE_PROTOTYPE)
public class MainLayout extends VerticalLayout {
Run Code Online (Sandbox Code Playgroud)

这是因为Vaadin组件只能有一个父组件.其他可能的范围是@UIScope@ViewScope.