정적 팩토리 스타일 (또는 싱글 톤 패턴)을 사용하여 사용자 정의 Window을 만들고 싶습니다.Vaadin의 정적 팩토리 스타일 (싱글 톤)으로 구성 요소 만들기
public class MyWindow extends CustomComponent {
private static Window window;
private static MyWindow instance;
public static MyWindow getInstance() {
if (instance == null) {
instance = new MyWindow();
}
return instance;
}
public void show() {
UI.getCurrent().addWindow(window);
}
private MyWindow() {
CustomLayout layout = new CustomLayout("My HTML Layout");
window = new Window("My Window");
window.center();
window.setWidth("615px");
window.setModal(true);
window.setResizable(false);
window.setClosable(true);
window.setContent(layout);
}
}
그리고 MyWindow.getInstance().show();
처음 통화는 확인하지만,이 창을 닫은 후이었고 재개하면서, 내 콘솔에서 오류 로그 아래에 도착으로 호출합니다. 그래서
Jul 23, 2014 3:42:39 AM com.vaadin.server.DefaultErrorHandler doDefault
SEVERE:
java.lang.IllegalStateException: com.vaadin.ui.Window already has a parent.
at com.vaadin.ui.AbstractComponent.setParent(AbstractComponent.java:469)
at com.vaadin.ui.Window.setParent(Window.java:155)
at com.vaadin.ui.UI.attachWindow(UI.java:501)
at com.vaadin.ui.UI.addWindow(UI.java:490)
, 어떻게 static 팩토리 스타일과 방법을 숨기고 Windows을 보여와 Windows을 사용자 정의 사용할 수 있습니까?
Vaadin에 고정 창 (또는 다른 구성 요소)을 생성해서는 안됩니다. 왜냐하면 동일한 인스턴스가 애플리케이션의 모든 사용자들에 의해 공유되고 틀렸기 때문입니다. 싱글 톤 패턴을 제거하기 만하면 문제가 해결됩니다 (응용 프로그램을 여러 사용자로 사용할 때의 문제점). –