2016-04-14 17 views
1

Uygulamamı 2 oturumda sınamanın her tarayıcısında, her şey tamam ve bir istisna alıyorum. oturumun kilitlenmediği zaman üst öğeden kaldırılamıyor

@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); 
    } 
} 

enter image description here

java.lang.IllegalStateException: oturum kilitli değilken ebeveynden kaldırılamaz. Ayrıca, bileşenin bir oturumdan diğerine taşınmak üzere olabileceğini belirten başka bir kilitli oturum var. com.vaadin.ui.UI.setContent (arayüzünde en com.vaadin.ui.AbstractSingleComponentContainer.setContent (AbstractSingleComponentContainer.java:148) de com.vaadin.ui.AbstractSingleComponentContainer.removeFromParent (AbstractSingleComponentContainer.java:175) de . java: 1312)

+0

MainLayout ve DetailView'unuzun kapsamları nelerdir? –

+0

Sadece 'SpringComponent' – AhmadReza

+1

ile onları açıkladım, bu kapsamın prototipini veya varsayılan olan singleton'dan başka bir şey tanımlamanız gerekir. Artık aynı mainlayout ve detailview örnekleri, çalışmayan tüm kullanıcılar tarafından paylaşılıyor. –

cevap

4

Vaadin bileşenlerini Yay yönetilen fasulyeler olarak tanımlarken, bunlardan biri için her zaman tekil olmayan bir kapsam tanımlamalıdır. Örneğin: Bir Vaadin bileşeninin yalnızca bir ebeveyni olması, bunun sebebi olmasıdır. Diğer olası kapsamlar @UIScope ve @ViewScope'dur.

İlgili konular