我真的不知道如何向Vaadin项目添加新页面。作为实验,我重命名了一页:
我重命名了这个:
@WebServlet(value = "/*", asyncSupported = true)
要:
@WebServlet(value = "/blabla1", asyncSupported = true)
但是,我想要一个新页面:
@WebServlet(value = "/blabla2", asyncSupported = true)
Unfortunatley,当我重命名第一个时,我在Chrome中收到此消息:
无法加载bootstrap javascript vaadin
如果上面的示例重命名似乎失败了,我该如何添加第二个网页呢?
答案 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 CDI或Vaadin Spring(你真的应该使用其中任何一个),你也可以通过提供url的最后一部分作为参数将UI映射到不同的URL注释。