如何向Vaadin项目添加新UI?

时间:2015-03-27 15:41:08

标签: java eclipse glassfish vaadin

我真的不知道如何向Vaadin项目添加新页面。作为实验,我重命名了一页:

我重命名了这个:

@WebServlet(value = "/*", asyncSupported = true)

要:

@WebServlet(value = "/blabla1", asyncSupported = true)

但是,我想要一个新页面:

@WebServlet(value = "/blabla2", asyncSupported = true)

Unfortunatley,当我重命名第一个时,我在Chrome中收到此消息:

  

无法加载bootstrap javascript vaadin

如果上面的示例重命名似乎失败了,我该如何添加第二个网页呢?

3 个答案:

答案 0 :(得分:0)

安德烈的回答并不完全正确。虽然简单的Vaadin应用程序可以像单页面应用程序一样,只修改UI的内容而不更改URL,但应用程序通常比这更复杂,需要不同的方法。

带有单个URL的Signgle页面应用程序有几个缺点。应用程序通常由许多部分和状态组成,通常具有自己的URL。用户可以直接导航到所需的组件或状态,将其加入书签以便以后直接访问,可以使用后退和按钮等。

在Vaadin,这是通过Navigator实现的。每个UI包含多个视图。然后使用导航器在视图之间导航。每个视图都有由URL片段表示的唯一URL,因此用户可以在那里导航,bookmart等等。

您可以阅读有关导航here in book of vaadin的详细教程。

  

普通Vaadin应用程序没有正常的网页导航   它们通常在一个页面上运行,就像所有Ajax应用程序一样。相当   但是,一般情况下,应用程序之间有不同的看法   用户应该能够导航。可以使用Vaadin中的导航器   对于大多数导航案例。导航器管理的视图   自动获取一个独特的URI片段,可以使用它   能够为视图及其状态添加书签并继续前进   在浏览器历史记录中。

答案 1 :(得分:0)

这是在Vaadin中使用“Navigator”的简单类示例。首先创建一个简单的导航器对象,并在布局中使用它来显示视图。

public class NavigationtestUI extends UI {
  @Override
    public void init(VaadinRequest request) {

  // Create Navigator, use the UI content layout to display the views
  Navigator navigator = new Navigator(this, getContent());

 // Add some Views
  navigator.addView(MainView.NAME, new MainView()); // no fragment

 // #count will be a new instance each time we navigate to it, counts:
 navigator.addView(CountView.NAME, CountView.class);

 // Navigate to view
 navigator.navigate();
     }
}

答案 2 :(得分:0)

基于片段的URL确实应该受到青睐。您还可以通过提供custom UI provider将不同的Vaadin UI提供给不同的URL(无片段)。

如果你使用Vaadin CDIVaadin Spring(你真的应该使用其中任何一个),你也可以通过提供url的最后一部分作为参数将UI映射到不同的URL注释。