2013-04-24 49 views
0

我想從我的登錄視圖導航到另一個視圖...此過程是通過我寫的身份驗證方法。我能夠從登錄視圖到另一個,但是,當我刷新窗口時,我得到一個醜陋的異常,告訴我沒有我想訪問的這種視圖。我已經嘗試過2個UI。一個用於登錄,另一個用於其他任何事情,第一個我想通過setContent()方法設置另一個UI,但是我給了我更加醜陋的例外,然後我發現它是被禁止的或類似的東西,所以我再次嘗試了它與意見和導航,但失敗。你可以幫我嗎?從我的用戶界面,將瀏覽器轉到該代碼..如何正確導航vaadin 7中的身份驗證視圖

navigator = new Navigator(this, this); 

navigator.addView("",new LoginView()); 

的認證方法我稱之爲:

getUI().getNavigator().addView("kniznica", new LoggedInView()); 
getUI().getNavigator().navigateTo("kniznica"); 

到一個新的視圖添加到用戶界面,然後導航到它。

後,我刷新稱爲「kniznica」視圖中的例外:

java.lang.IllegalArgumentException: Trying to navigate to an unknown state 'kniznica' and an error view provider not present 
at com.vaadin.navigator.Navigator.navigateTo(Navigator.java:525) 
at com.vaadin.ui.UI.doInit(UI.java:534) 
at com.vaadin.server.AbstractCommunicationManager.getBrowserDetailsUI(AbstractCommunicationManager.java:2468) 
at com.vaadin.server.AbstractCommunicationManager.handleBrowserDetailsRequest(AbstractCommunicationManager.java:2362) 
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:325) 
at com.vaadin.server.VaadinServlet.service(VaadinServlet.java:201) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
at java.lang.Thread.run(Thread.java:722) 

回答

4

也許它沒有導航到登錄查看首。試試這個:

public static String LOGINVIEW ="LoginView"; 
public static String LOGGEDINVIEW = "kniznica"; 

navigator = new Navigator(this, this); 

navigator.addView(LOGINVIEW ,new LoginView()); 
navigator.navigateTo(LOGINVIEW); 

在認證方法調用:

getUI().getNavigator().addView(LOGGEDINVIEW, new LoggedInView()); 
getUI().getNavigator().navigateTo(LOGGEDINVIEW); 
+0

謝謝你的回答,我已經在這裏找到了有用的東西:[https://vaadin.com/wiki/-/wiki/Main/Creating%20a%20simple%20login%20view](https:// vaadin .COM /維基/ - /維基/主/創建%20A%20simple%20login%20view) – kalafun 2013-04-27 11:10:53

0

使用你的UI類下面,在init方法的末尾:

this.navigator.setErrorView(myView); 

,它將被固定與空片段的錯誤。