2012-01-24 5 views
0

サーブレット例外が発生しUriFragmentUtilityは、私はこのvaadinを次れたとして

ここで
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) 

私は私のメインアプリケーションクラスにオブジェクトを追加する方法である:それは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); 

} 

、私のパスが設定されていますas/Du gsi_Manager(web.xml)は、urifuオブジェクトをhttps://localhost:8080/Dugsi_Manger#loginとして追加した後に開始されませんか?

編集:ログインウインドウの宣言を追加しました:

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オブジェクトが標準Vaadinウィンドウに追加することができるようようだが、私のcreateLoginWindow機能で作成した画面上では動作しません。 ?なぜ私は理解できませんか?

答えて

0

例外は、CustomComponentのaddComponentメソッドによってスローされます。だから、私はCustomComponentがウィンドウの内容だと思います。問題を解決するには、CustomComponentの組成ルートの代わりに、私は起動画面を呼び出すカスタムコンポーネントにこのUriFragmentUtilityを追加しようとした

window.addComponent(urifu); 
+0

のレイアウトに直接ごUriFragmentUtilityを追加していないが、それは全く影響しません。それは、createLoginWindow()関数を使ってウィンドウを作成する方法が好きではないようです。私は標準のvaadin.ui.Windowクラスを使用してウィンドウを作成する場合、それは正常に動作します。 LoginWindowクラスの作成方法を示す編集を追加しました。 – Warz

関連する問題