2012-01-24 3 views
0

서블릿 예외가 발생UriFragmentUtility 내가이 angel이라는 다음되면서

는 URI 주요 부분 (주소 + 경로 + 옵션 쿼리 매개 변수)에 대해 이야기 튜토리얼에서

//Thread Local to create instances of our application 
private static ThreadLocal<DugsiManagerApplication> threadLocal = new ThreadLocal<DugsiManagerApplication>(); 
@Override 
public void init() { 
    setInstance(this); // immediate access to the app 
    //Window homeWindow = createNewWindow(); 
    Subject currentUser = SecurityUtils.getSubject(); 
    // Create the URI fragment utility 
    Window window = createLoginWindow();  

    setMainWindow(window); 
    final UriFragmentUtility urifu = new UriFragmentUtility(); 
    window.addComponent(urifu); 

} 

내 경로가 설정되어 : 난 내 기본 응용 프로그램 클래스에 개체를 추가하는 방법을 여기에

SEVERE: Servlet.service() for servlet [Dugsi_Manager Vaadin Application Servlet] in context with path [/Dugsi_Manager] threw exception [java.lang.UnsupportedOperationException] with root cause 
java.lang.UnsupportedOperationException 
    com.vaadin.ui.CustomComponent.addComponent(CustomComponent.java:218) 
    com.vaadin.ui.Panel.addComponent(Panel.java:301) 
    com.vaadin.ui.Window.addComponent(Window.java:281) 
    org.bixin.dugsi.web.DugsiManagerApplication.init(DugsiManagerApplication.java:44) 
    com.vaadin.Application.start(Application.java:554) 
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.startApplication(AbstractApplicationServlet.java:1213) 
    com.vaadin.terminal.gwt.server.AbstractApplicationServlet.service(AbstractApplicationServlet.java:484) 
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722) 
    org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:359) 
    org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:275) 
    org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90) 
    org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83) 
    org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:344) 
    org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:272) 
    org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:81) 
    org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:237) 
    org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167) 

입니다 as/Du 그런 다음 urifu 개체를 https://localhost:8080/Dugsi_Manger#login으로 추가 한 후 gsi_Manager (web.xml)를 시작해야합니까?

편집은 다음 LoginWindow의 선언을 추가 :

public Window createLoginWindow(){ 
    final Window loginWindow = new LoginWindow(); 

    //remove the window if closed to avoid memory leaks 
    loginWindow.addListener(new CloseListener() { 
     @Override 
     public void windowClose(CloseEvent e) { 
      if (getMainWindow() != loginWindow) { 
       DugsiManagerApplication.this.removeWindow(loginWindow); 
      } 
     } 
    }); 
    return loginWindow; 
} 

\ ** UriFragmentUtility 객체가 표준 angel이라는 창에 추가 할 수있는 것 같다하지만 내 createLoginWindow 함수로 만든 윈도우에서 작동하지 않습니다 ? 나는 이유를 알 수 없다?

답변

0

예외는 CustomComponent의 addComponent 메소드에 의해 발생합니다. 그래서 CustomComponent는 윈도우의 내용이라고 생각합니다. 이 문제를 해결하려면 CustomComponent의 구성 루트 대신 내가 시작 창을 호출하는 사용자 정의 컴포넌트이 UriFragmentUtility을 추가하는 시도

window.addComponent(urifu); 
+0

의 레이아웃에 직접 UriFragmentUtility를 추가하지 않습니다하지만 아무 영향을 미치지 않습니다. 그것은 createLoginWindow() 함수를 사용하여 창을 만드는 방식을 좋아하지 않는 것처럼 보입니다. 표준 vaadin.ui.Window 클래스를 사용하여 윈도우를 만들면 잘 동작합니다. 내 LoginWindow 클래스를 만드는 방법을 보여주는 편집을 추가했습니다. – Warz